Go Down

Topic: Vorstellung und Frage zu Fotodioden^^ (Read 566 times) previous topic - next topic

Bombi

Hallo alle zusammen,

Mein Name ist David und ich Arbeite als Betriebselektriker (Gelernter Elektroniker Automatisierungstechnik) in einer recht bekannten Firma welche auch Automobilzulieferer/Haushaltsgerätehersteller ist ;). Von echter Elektronik bzw. Arduinos habe ich eigentlich absolut keine Ahnung obwohl es mich echt Fasziniert^^.

So nun zu meinem "Problem":

Ich bin Sportschütze (Gewehr/Pistole/Bogen) und werde vorraussichtlich  im November die Erlaubnis zum Herstellen von Munition erhalten. Damit ich diese vergleichen/verbessern und abstimmen kann muss ich die Geschwindigkeit messen. Ich weiß es gibt schon viele Projekte von Ballistischen Chronographen (Ballistic Chrony/Chronograph) diese haben jedoch alle das gleiche/ähnliche Probleme. Sie nutzen eine Lichtquelle (Laserpointer/LED) und einen Empfänger Fototransistor/-diode. Diese werden meist in Rohre oder in großen Gestellen/Käfige verbaut. Das Problem ist: Sie sind unhandlich (Käfig) oder ungeeignet (Rohr(aufgrund der heißen Gase/Rauch und Pulverreste wird das Geschoss nicht zuverlässig erkannt )).


Kommerzielle Produkte für diesen Zweck nutzen das Umgebungslicht und erkennen Veränderungen an diesem. es entsteht ein Einbruch in der Kennlinie. Diese Systeme gibt es für rund >100€ zu kaufen. Aber selber machen wäre cooler^^


Die eigentliche Frage:
Wie baue ich dass^^ Über die Analogen Eingänge könnte ich Schwellwerte bestimmen die eine Messung auslösen. Jedoch habe ich oft gelesen dass diese zu langsam seien. Die Digitalen Eingänge sind schnell genug, jedoch kann ich keine Analogen Messwerte verarbeiten.


Das Gerät soll später Messungen bis ca. 1000m/s erkennen können. Als kleines Rechenbeispiel wie schnell das ist hier ein Rechenbeispiel:

Geschosslänge= 7mm
Messdistanz= 30cm/3000mm
Geschossgeschwindigkeit= 1000m/s


Messpunkt:

1000m/s=100.000cm/1000ms=1.000.000mm/1.000.000us

Somit hat Messpunkt 1 wie auch 2 gerade mal 7 us Zeit das Geschoss zu erfassen und den Zähler/Timer zu starten.


Wegstrecke:
100.000cm/30cm= 3333,3
1.000.000us/3333,3= 300us

Nach 300 us muss an messpunkt 2 der Timer/zähler wieder gestoppt werden.


Fotodioden sind recht schnelle und können diese Zeiten bewältigen (Bsp.: BPW34 ~ 100ns)


Aber wie zum Teufel verbinde ich das mit dem Arduino und programmiere das ganze. Ich erwarte hier nicht dass mir jmd. die Lösung auf dem Silbertablet serviert. Ich hoffe dennoch das jmd. eine Idee hat wie ich meine Sensorik aufbauen muss damit das ganze funktionieren könnte.


Material habe ich bis jetzt ausschließlich einen Arduino Uno sowie Nano.

An Werkzeug steht mich alles gängige zur Verfügung inkl. eines 3D-Druckers falls dies hilft.


In diesem Sinne

Gute Nacht ^^







combie

Quote
Wie baue ich dass^^ Über die Analogen Eingänge könnte ich Schwellwerte bestimmen die eine Messung auslösen. Jedoch habe ich oft gelesen dass diese zu langsam seien. Die Digitalen Eingänge sind schnell genug, jedoch kann ich keine Analogen Messwerte verarbeiten.
Nicht übersehen...
Es gibt auch noch den analogen Komparator.
(Manche Arduinos(kompatible) haben auch zwei davon im Bauch)

Der reagiert auf analoge Schwellwerte, liefert aber SOFORT ein digitales Signal.
Kann auch Timer und Interrupts triggern.
Ein Frosch, der im Brunnen lebt, beurteilt das Ausmaß des Himmels nach dem Brunnenrand.

Bombi

Danke für die schnelle Antwort^^
Erstmal Googlen was das ist und wie ich ihn nutze... Evtl. ist es ja schon die Lösung meines Problems^^

Gruß
David

Serenifly

Quote
Fotodioden sind recht schnelle und können diese Zeiten bewältigen (Bsp.: BPW34 ~ 100ns)
Diese Geschwindigkeit kannst du nur ausnutzen wenn du die Diode mit einem Operationsverstärker betreibst. Das ist nicht ganz trivial

https://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor
https://www.digikey.de/de/articles/techzone/2017/jun/how-to-design-stable-transimpedance-amplifiers-automotive-medical-systems

postmaster-ino

Hi

Wie 'schnell' die Erkennung des Objekt ist, ist doch eigentlich egal - Hauptsache, das Objekt wird erkannt und Es wird immer gleich schnell erkannt.
Ob Der Arduino mir DIREKT die abgelaufene Zeit anzeigt, oder 3ms später - sollte hier wurscht sein.

Meine laienhafte Überlegung geht in die Richtung zwei Spannungsfolger, wovon Einer Seine Ausgangsspannung über einen C puffert.
Diese beiden Spannungsfolger werden per (ggf 2x) Komparator verglichen - wenn die Spannung schwankt, hat sich das Eingangssignal verändert.
Bis zu welcher Stärke man Das ignorieren muß oder wie man dazwischen eine 'Grauzone' definiert - kA.

7µs ist nicht viel Zeit, außerdem kann der Arduino nur in 4er Happen zählen (siehe dazu micros() ).
Mit 16.000.000Hz haben wir jede µs 16 Takte - denke, alleine das ganze Drumherum benötigt mindestens 16 Takte, um micros() hochzuzählen.
Wenn der Arduino noch irgend etwas Anderes in Seinem Leben machen soll, muß ich hier mit Sprüngen leben, damit ich noch Takte für das eigentliche Programm über habe.

Theoretisch solltest Du also mit einem nacktem µC eine Auflösung von 2/16µs bekommen können, wenn Du nur den Hardware-Timer benutzt und Diesen mit Deinen Signalen an/aus gestellt bekommst.
(meine, der Timer kann nur im 2-Takt-Rythmus hochzählen, müsste nachlesen)
Abzüglich der Laufzeit, die Eingänge der Sensoren abzufragen und den Timer entsprechend zu manipulieren.

Meine Meinung:
Mit dem Arduino als Arduino - also Programmieren in der IDE in C++, wird Das zu langsam werden.

Sonst könnte der Ablauf ungefähr so aussehen:
Code: [Select]

- TOF-Interrupt als TimeOut
- Anhalten des Timer
- Setzen der Timer-Geschwindigkeit

- Anzeige der letzten Laufzeit
  Setzen des Timer auf 0
- Warten auf IN-Sensor, möglichst kurze Schleife
- Starten des Timer
- Warten auf OUT-Sensor, möglichst kurze (bzw. gleich lange) Schleife
- Stoppen des Timer
- goto Anzeige

- TimeOut
- Stoppen des Timer
- Setzen des Timer auf -1 (alle Bits gesetzt, als Zeichen für TimeOut)
- goto Anzeige

Dann stellt sich aber auch die Frage, wie man Das testet?
Mit dem besten Zollstock (GliederMaßStab) lassen sich keine µm messen, weil die 'Auflösung' Das nicht her gibt.
Du bräuchtest also irgend ein sehr akkuraten Zeitmesser oder müsstest Deine Messeinrichtung mit Einer mit bekannter Genauigkeit 'einnorden'.

Das wird nicht trivial und die Stunden werden Dir nur so durch die Finger rinnen - ob Da eine Kauf-Lösung nicht doch günstiger zu bekommen ist?

PS: Umgebungslicht - wie beleuchtet Ihr Eure Schießbahn?
Alles, was irgendwie flackert, dürfte Da zusätzliche Probleme bereiten.

Mir fällt gerade noch der Licht-Vorhang ein, wird aber wohl kaum günstiger werden - alleine, weil Du ja ebenfalls Zwei davon brauchen wirst - wäre aber unkritischer, den entsprechenden Bereich sicher zu passieren.
Gerade beim Bogen stelle ich mir das Durchfliegen eines 5-Mark-Stück großen Bereich 'sportlich' vor.

MfG

PS: Interessantes Hobby, das letzte Mal geschossen hatte ich bei Y-Reisen, dort aber keinen Bogen ;)

DrDiettrich

Eigentlich ist das eine Aufgabe für einen DSP, ein kleiner Arduino tut sich etwas schwer mit solcher Geschwindigkeit.

Ein Komparator ist zwar vorhanden, aber eben nur einer. Wenn man den für beide Signale verwenden möchte, muß man zwischendrin die gestoppte Zeit abspeichern und den Eingang umschalten - das wird knapp.

Wegen der Einstellerei halte ich externe Komparatoren für besser geeignet. Da kann man die Schaltschwellen individuell einstellen, und ihre Ausgänge direkt auf einen digitalen Time-Catch Eingang legen. Dann kann man zwei separate Timer eines Mega benutzen und kann sich die Zeiten gemächlich nach der Triggerung abholen. Das Synchronisieren der Timer ist etwas tricky, aber gut beherrschbar und ausführlich dokumentiert.

DrDiettrich

Analog kann man das Signal einmal direkt und einmal über einen RC-Tiefpaß auf die Eingänge eines Komparators legen. Damit reagiert der Komparator nur noch auf Änderungen, die Schaltschwelle wird kontinuierlich an das Signal angepaßt. Man muß dann nur noch einen Offset so dazumischen, daß der Komparator immer kurz unter der Schaltschwelle steht, nicht darüber.

Bombi

Danke an alle für die Zahlreichen Antworten :)

Thema Umgebungslicht:
Ihr habt mich ertappt... Es handelt sich um Leuchtstoffröhren  :smiley-confuse:  allerdings lässt sich dies umgehen durch einen einfachen LED-Strip. Einfach darüber und dieser Überlagert das "Signal"

Kallibrierung:

Ein Vereinskamerad hat zum Glück einen gekauften Chrony. Somit müsste ich die Teile nur hintereinander Stellen und kann das ganze relativ genau Kallibirieren.
Von ihm stammt auch die LED-Strip idee. Bis jetzt funktioniert diese.


Ich habe noch etwas bei nuts&volts gefunden (gibts als set zu kaufen für 150$) allerdings haben diese eine Teileliste online.

http://www.nutsvolts.com/magazine/article/March2017_Ballistic-Chronograph

für die Sensorik werden folgende Teile benötigt:


    4 - Photo Sensor (TSL14S)
    4 - 0.1 µF Capacitors
    2 - 1 nF Capacitors
    2 - PIC12F1822 (Programmed)
    2 - MCP 601 Eight-pin Chip
    2 - 1 meg 1/6 watt Resistors
    2 - 10K 25 Trimmer Pot
    2 - 10K 1/6 watt Resistors
    2 - Printed Circuit Boards

In meinem Fall würde jedoch der PIC wegfallen. Allerdings was ich hier so lese brauch ich mir nicht wirklich Hoffnungen machen das als absoluter Anfänger zu stämmen, zumal ich hier bereits schon sehr an die Grenzen des Arduinos (Zeittechnisch) komme.

DrDiettrich

Für dieses Projekt braucht man eigentlich mehrere Spezialisten, für analog, digital und Programmierung. Zum Lernen könntest Du mit Pfeil und Bogen anfangen, da sollte eine Mesung auch mit eher durchschnittlicher Elektronik und Programmierung funktionieren.

postmaster-ino

Hi

Naja - bei Dem Projekt werden gleich 3 µC verwendet, zwei PIC12F1822 zur Signal-Aufbereitung und ein PIX16F91F als Haupt-Hirn.
Weiter sind die Programme in Assembler geschrieben, was bei zeitkritischen Abläufen öfter vorkommt.
Z.B. ähnlich den WS2812B-LED-Stripes - Diese werden von der entsprechenden Lib auch in Assembler angesprochen, um das nötige Timing einhalten zu können.

Mittlerweile sind PIC und AVR ja quasi Geschwister (MicroChip hat Atmel aufgekauft), welchen µC Du benutzt, ist meist eine Geschmacksfrage - wenn man nur PICs kennt, nimmt man PICs, wenn man nur AVRs kennt, wohl AVRs.

Die Aufbereitung kann man ja von dem Projekt abkupfern.
Man müsste recherchieren, ob die Sensor-µCs die Signale 1:1 durchgeben, oder ob Diese selber z.B. die Dunkelphase (Geschoss fliegt gerade vorbei) erfassen und die Daten per Abruf vom Master bereit stellen - klingt eigentlich nach einem gangbaren Weg, auch hat der Master 'alle Zeit der Welt' sich um Anzeigen oder sonst was zu kümmern.

MfG

PS: LED-Stripes sind eigentlich auch die übelsten Blinker - zumindest, wenn Sie per PWM gedimmt werden.
Bei Voll-An sollte das Geblinke natürlich weg sein.

DrDiettrich

Bei IR wird der Strahl gepulst und damit der (geeignete) Empfänger unabhängig von Umgebungslicht. Das könnte auch noch die Aufgabe der verschiedenen PIC sein.

postmaster-ino

Daten zum 12F1822
Code: [Select]

    IC, 8BIT MCU, PIC12F, 32MHZ, SOIC-8
    5V
    10 bit Analog to Digital Conversion. Up to 4 channels
    2x 8-bit and 1x 16 bit timers
    Serial Port
    I2C, SPI
    No. of I/O's:6
    Program Memory Size:3.5KB
    EEPROM Memory Size:256Byte
    RAM Memory Size:128Byte
    No. of Pins:8

'Etwas' schneller ist Er (32 statt 16MHz), dafür ist der Rest ... der Zwerg kann viel, aber durch die anderen Beschränkungen wohl immer nur Eines davon.
Aber 85Cent für einen 4-fach 10bit ADC, ggf. per I²C ansprechbar, da kann man auch nicht direkt drüber meckern.
(man müsste wohl das DaBla lesen)
... und dann hat man zwei Welten, in Denen man vor Bugs nicht sicher ist ;)

MfG

combie

Man könnte für die Erfassung auch einen Tiny85 nehmen, oder zumindest drüber nachdenken. Denn dessen Timer kann mit internen 64MHz getaktet werden(soweit mir bekannt).
Ein Frosch, der im Brunnen lebt, beurteilt das Ausmaß des Himmels nach dem Brunnenrand.

Bombi

Ich danke euch allen für die zahlreichen Antworten.

Aber wie es scheint ist es für mich ein eher unerreichbares Ziel bzw. steht in keinem Verhältnis mehr zu den 130€ die so ein Teil kostet... Wie gesagt ich bin absoluter Anfänger... Evl. wird es in 10 Jahren sehr einfach wenn die Teile 2 GHz können und es somit egal ist ob man das ganze in Assambler, C oder über die Arduino IDE programmiert ^^


vielen Dank nochmal an alle die versucht haben mir zu helfen


Gruß David

Bombi

Hallo nochmal an alle^^,

Entschuldigt dass ich mich nochmal melde aber das Thema lässt mich einfach nicht in Ruhe^^.

Könnte ich zur Signalerfassung auch einfach eine Fertiges Modul mit einem LM393 verwenden und oben eine Photodiode aufsetzten?

Die Teile gibts fertig bei ebay für nen schmalen Taler. Da keine angbane zur Diode könnte man diese ersetzten.

laut datenblatt (LM393) eine response time von 1.3 us

Ebay LM393


Gruß David^^

Go Up