Ich benutze das den Systemtest "ACS - Check"
da sollte doch alles korrekt sein.
Meine Theorie ist auch das die Spannung an LEDs zu gering ist und dadurch die Strahlleistung zu schwach ist.
Gruß
Ich benutze das den Systemtest "ACS - Check"
da sollte doch alles korrekt sein.
Meine Theorie ist auch das die Spannung an LEDs zu gering ist und dadurch die Strahlleistung zu schwach ist.
Gruß
Hallo
Die Leistung kannst du nur erhöhen, wenn du die Vorwiderstände der IR-LEDs änderst. Aber das sollte nicht nötig sein, wenn sie richtig angesteuert werden. Hast du inzwischen überprüft, ob OC3A auch wirklich als Ausgang konfiguriert ist und ob der Pin den Pegel wechselt, wenn die IR-LEDs aktiv sind?
Ich kenne nur die Hardware des probot, mit dem C-Control und seiner Programmierung hatte ich noch keinen Kontakt. Deshalb kann ich nicht sagen, ob und wie der Systemtest "ACS - Check" funktioniert (oder ob er je funktioniert hat).
Gruß
mic
P.S.: Wie sieht denn dein Progamm aus?
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Das ist der SystemCHeck den ich verwende:
Code:#define PWM_IR 35 #define IR_left 27 #define IR_right 29 #define TSOP 26 Dim Text(40) As Char Sub main() PRO_BOT128_INIT() Port_DataDirBit(IR_left,PORT_OUT) Port_DataDirBit(IR_right,PORT_OUT) Port_DataDirBit(TSOP,PORT_IN) Timer_T3PWM(51,25,PS_8) AbsDelay(500) Do While True Port_WriteBit(IR_left,PORT_OFF) Port_WriteBit(IR_right,PORT_ON) AbsDelay(5) If Port_ReadBit(TSOP) = 0 Then Text = "Object right" Msg_WriteText(Text) Msg_WriteChar(13) AbsDelay(500) End If AbsDelay(100) Port_WriteBit(IR_left,PORT_ON) Port_WriteBit(IR_right,PORT_OFF) AbsDelay(5) If Port_ReadBit(TSOP) = 0 Then Text = "Object left" Msg_WriteText(Text) Msg_WriteChar(13) AbsDelay(500) End If AbsDelay(100) End While End Sub
Geändert von radbruch (13.11.2011 um 16:00 Uhr)
Hallo
Das ist ja fast genau das nicht funktionierende Programm aus diesem Thread:
https://www.roboternetz.de/community...ür-Pro-Bot-128
Ausgehend von diesen Kommentaren...
...setzt in Timer_T3PWM der erste Parameter die Periodendauer (51 für 36kHz) und der zweite Parameter steuert das Impuls/Pause_Verhältnis (sollte bei ersten Tests ca. 25 sein). Die Funktion des dritten Parameters (PS_8) kann ich nicht erkennen. Deine Parameter erscheinen also richtig.Code:'Timer_T3PWM(Par1,Par2,PS); 'Period = Par1*PS/FOSC (51*8/14,7456MHz=27,66 µs) = 36Khz 'Pulse = Par2*PS/FOSC (25*8/14,7456MHz=13,56 µs) On Time 'Timer_T3PWM(Word period,Word PW0,Byte PS) '36Khz 'Mit Par1, Par2 kann die Entfernung eingestellt werden
Nun weiß ich nicht, was in PRO_BOT128_INIT() alles erledigt wird, aber in deiner Programmvariante deutet dies...
...darauf hin, dass die Datenrichtung der verwendeten Portpins "von Hand" definiert werden müssen. Hier fehlt allerdings das weiter oben schon erwähnte Setzen der Datenrichtung für den OC3A als Ausgang:Code:Port_DataDirBit(IR_left,PORT_OUT) Port_DataDirBit(IR_right,PORT_OUT) Port_DataDirBit(TSOP,PORT_IN) Timer_T3PWM(51,25,PS_8)
Port_DataDirBit(PWM_IR,PORT_OUT)
Ohne diesen Befehl werden die 36kHz über den internen PullUp ausgegeben. Das würde deine extrem schwache Leistung deiner IR-LEDs erklären.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke für die kompetente Hilfe, aber es funktioniert immer noch nicht.
"Port_DataDirBit(PWM_IR,PORT_OUT)"
hatte ich auch schonmal, aber hatte sich leider nichts verändert.
Ich werd die Frequenz mal mit nem Oszi testen lassen.
Ich hab nochmal Spannungen gemessen:
OC3A zu Masse sind etwa 2,5V, PD5 zu Masse 5V.
Bleiben also für die 3 LEDs und den Widerstand etwa 2,5V
Gruß
Es funktioniert ja noch nicht, möglicherweise denke ich auch zu kompliziert.
"OC3A zu Masse sind etwa 2,5V" bedeutet 50:50 Tastverhältnis. Also läuft immerhin der Timer. "PD5 zu Masse 5V" ist allerdings schlecht. Wenn der Pin high ist gibt es keinen Strom durch die IR-LEDs und man kann nicht unterscheiden, ob OC3A direkt oder über PullUp gemessen wird. Besser wäre eine Messung des Stroms durch die LEDs an OC3A.
Das Programm wechselt die Seite bei der Abfrage. Zuerst wird rechts gemessen:
Kathoden der linken LEDs auf Low, die der Rechten auf High. Prima, jetzt leuchten aber die linken LEDs. Seiten vertauscht?Code:Do While True Port_WriteBit(IR_left,PORT_OFF) Port_WriteBit(IR_right,PORT_ON) AbsDelay(5) If Port_ReadBit(TSOP) = 0 Then Text = "Object right"
Bild hier
[Edit]
Wie lange dauert denn das "AbsDelay(5)"? Der TSOP braucht mindestens 6-10 Impulse bis er das Signal erkennt. Das wären 10 * (1/36000) oder 0,000277Sek bzw. 277µs. Und die Leds leuchten auch nicht schlagartig...
Nein, es bleiben für die drei LEDs und den Widerstand (und den PullUp?) genau 36000 mal 5V und 36000 mal 0V in der Sekunde. ;)Bleiben also für die 3 LEDs und den Widerstand etwa 2,5V
Zu "Besser wäre eine Messung des Stroms durch die LEDs an OC3A."
Mit und ohne "Port_DataDirBit(PWM_IR, PORT_OUT)", jeweils mit "Port_WriteBit(IR_right,PORT_OFF)".
[Edit2]
Vorsichtshalber habe ich mal das Pinout überprüft:
http://www.c-control-pro.de/document...ordnung128.htm
#define IR_right 29: Scheint richtig. PortBit 29 ist PD5.
#define IR_left 27: PortBit 27 ist PD3/TXD1. Auch richtig.
Geändert von radbruch (13.11.2011 um 23:28 Uhr)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Also bei der Messung habe ich neue Erkenntnisse gewonnen:
1. Ob "PWM_IR OUT" oder nicht, spielte bei der Messung keine Rolle
2. Es fließt ein Strom von 3,5mA im aktiven Strang
3. Bei "PORT_OFF" messe ich 5V zur Masse im ensprechendem Strang, bei "PORT_ON" sind es 0V (sollte es nicht anders herum sein)
AbsDelay(5) dauert 5/1000 sec also 0,005sec, das sollte reichen
Lesezeichen