-
-
Erfahrener Benutzer
Robotik Einstein
grübelgrübel ... das iss echt merkwürdig Q_Q versuch es mal mit nem dazwischengefrickelten pnp-transistor als verstärker EVENTUELL hilft das ... mehr als raten kann cih lleider auch nciht mehr an der stelle, tut mir leid
-
Erfahrener Benutzer
Fleißiges Mitglied
nimm den "icp1/icp-anschluss" zum puls-messen.
-
Erfahrener Benutzer
Robotik Visionär
Zur genauen Pulsmessung sollte man wie gesagt den ICP Anschluss nehmen. Ablternativ geht auch der Komerator, wenn da signal klein ist. Aber die Signalstärke scheint ja schon geklärt.
Für die immer gleichen 15.75 us könnte ich 2 mögliche Erklärungen geben:
1) Störungen vom PC Monitor oder 100 HZ TV (31 kHz Horizontal, 1:1 Tastverhältnis -> ca- 16 us)
2) Der das Interrruptflag wurde nicht gelöscht, sodass sofort ein zweiter interrrupt ausgelöst wird. 16 us sind zwar eine recht lange Zeit für eine ISR routine aber in Basic könnte das schon mal passieren.
-
Habe das Programm mal mit 12MhZ ext.Quarz anstelle den 8Mhz internen Quarz laufen lassen. Gleiches Ergebnis. Liegt also nicht an einer Bearbeitungszeit, sonst wäre es unterschiedlich.
Habe jetzt mal die 3. Version probiert mit icp. Und ext. Quarz mit 12Mhz
Funktioniert zwar auch, aber die Werte passen immer noch nicht.
Vielleicht doch Störimpulse?
Oder habe ich den Sensor falsch, nicht optimal eingesetzt?
Was mich schon wundert das ich 50K Widerstand in Reihe zum SFH205 nehmen muss um ein brauchbares Signal (am SFH205 abgegriffen) zu bekommen. Passt nicht ganz mit dem Datenblatt überein.
Wenn ich das Signal verstärken wollte, wie müsste das mit den Widerständen aussehen um einen BC546B als Schalter zu verwenden?
-
Erfahrener Benutzer
Robotik Visionär
Eine gut Verstärkerschaltung für Photodioden/Transtoren geht wie folgt:
NPN-Transistor (möglicht hohe Verstärkung) mit Emitter gegen Masse. Photodetektor von der Basis nach Masse. Widerstand von ca. 5 K bis 50 K vom Kollektor nach VCC. Ausgang ist der Kollektor. Und schließlich noch ein Widerstnd vom Kollektor zur Basis. Der Wert dieses letzten Widerstandes gibt die Empfindlichkeit vor. Bei einer Photodiode sollten das ca. 100K-10 MOhm sein, bei einem Phototransitor eher 1K-1 M. Je nach Stärke des Lichsignals und Empfänger noch etwas mehr oder weniger.
-
habe die Verstärkerschaltung mal aufgebaut mit 500K Poti zur Basis, verstärkt wirklich sehr gut, d.h. Senderabstand kann größer werden. Aber der Effekt bleibt. Jetzt habe ich mal das Sensorsignal mit einem Oszilloskope angesehen. Das Signal ändert sich in der Amplitude wenn man mit dem Sender näher an den Sensor kommt, was einleuchtet, aber es ändert sich auch die Periode, d.h. die Frequenz ändert sich. Kann natürlich nicht sein aber das liegt wohl an der Signalverarbeitung das sich die Schwellwerte für 1 und 0 bei verschiedenen Amplituden ändern.
Werde die Signalerkennung mal über den Analog/Digital laufen lassen und da feste Werte abfragen ab wo 0 und 1 sein sollen.
-
-
Erfahrener Benutzer
Roboter Experte
Ich benutze zwar nicht Basic, sondern C, aber das kommt mir schon komisch vor. Nach Deiner Beschreibung könnte kein Code funktionieren, die in Bascom geschrieben worden ist, und zeitkritisch ist...
Gibts da im Compiler nicht irgendwelche Optimierungsstufen, die man einschalten muss?
-
Erfahrener Benutzer
Robotik Visionär
Die Abfrage des AD Wandlers und das Ansprechen des LCD sind immer recht langsam (auch in C oder Assembler). Bei den LCDs wird bei jedem Übertragenem Byte auf die Bestätigung des LCD-Moduls gewartet und dass kann halt dauern. Beim AD Wandler gibt es nur relativ wenige Befehle, die entsprechend alle eventuelaitäten vorsehen müssen und entsprechend auch mal 2 Wandlungen abwarten müssen. Außerdem gint es beim AD Wandler noch einiges zu konfigurieren.
Einen Ausgabefrequenz von 1 MHz für eine Software Toogle-Schleife ist doch sogar gut, die Schleife ist also nur 6 Zyklen lang. In Assembler kommt man auch nur auf 2 Zyklen (3 MHz) und das auch nur ausnutzen der Spezillen toogle funktion der Ports. Ich glaube kaum dass GCC da besser sein wird, aber muss man mal testen.
-
Erfahrener Benutzer
Roboter Experte
Naja, etwas stimmt trotzdem nicht, die 18Hz sind extremst wenig...
Ich hab ein Durchflussmesssystem in der Firma entworfen, basierend auf einer Atmega8 mit 1Mhz internem Takt. Der rechnet die Uhrzeit für sich selber, misst eine Impulslänge vom Sensor, gibt alle Daten am LCD aus, und entscheidet über Alarmzustände. Das ganze ist in GCC, und ich hab keine Probleme.
Die Impulslängenabfrage und die Uhrzeitberechnung sind mit Interrupts implementiert, und in dem Fall ist es wurst, was man grad mit dem LCD macht. Den AD-Wandler kann man auch per Interrupt machen, dann muss man nicht immer alles abwarten.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen