- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: ProBot128 ACS

  1. #11
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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!

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9
    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 17:00 Uhr)

  3. #13
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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...

    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
    ...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.

    Nun weiß ich nicht, was in PRO_BOT128_INIT() alles erledigt wird, aber in deiner Programmvariante deutet dies...

    Code:
        Port_DataDirBit(IR_left,PORT_OUT)
        Port_DataDirBit(IR_right,PORT_OUT)
        Port_DataDirBit(TSOP,PORT_IN)
        Timer_T3PWM(51,25,PS_8)
    ...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:

    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!

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9
    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ß

  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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:

    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"
    Kathoden der linken LEDs auf Low, die der Rechten auf High. Prima, jetzt leuchten aber die linken LEDs. Seiten vertauscht?

    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...

    Bleiben also für die 3 LEDs und den Widerstand etwa 2,5V
    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. ;)

    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 (14.11.2011 um 00: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!

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9
    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

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    3,5mA könnten bei 50:50 der Berechnung entsprechen: "Das ergibt (5V-3*1,3V)/150Ohm=0,007A pro Strang".

    1 könnte bedeuten, dass Timer_T3PWM() doch Einfluss auf die Pinkonfiguration nimmt. Die mit Port_DataDirBit() gesetzte Datenrichtung wird überschrieben:

    Code:
        Port_DataDirBit(IR_left,PORT_OUT)
        Port_DataDirBit(IR_right,PORT_OUT)
        Port_DataDirBit(TSOP,PORT_IN)
        Port_DataDirBit(PWM_IR,egal)
        Timer_T3PWM(51,25,PS_8)
    Die Bedeutung von "PS_8" ist auch noch nicht klar.

    Bei 3 verstehe ich die Frage nicht.

    Um AbsDelay() zu testen könntest du eine LED im Sekundentakt blinken lassen.

    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!

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9

    Beitrag

    Timer_T3PWM( 51,25,PS_8 )

    PS_8 steht für die Zeitbasis (Dauer eines Ticks)
    Diese ist bei PS_8 542,5 ns.
    Daraus errechnet sich die Frequenz:

    Periodendauer = 542,5ns*51 = 0,02766 s
    Frequenz = 1/Periodendauer = 36,143 Hz
    ----------------------------------------------
    AbsDelay(Dauer in Millisekunden)
    Also bei AbsDelay (1000) blinkt die LED relative genau im Sekundentakt

    Gruß

  9. #19
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    PS_8 steht für die Zeitbasis
    Aha, vielleicht sollte ich mir doch mal die Doku anschauen. PS steht für PreScaler (=Vorteiler). Die Periodendauer bei 36000Hz (36kHz) ist doch 27,7µs oder 0,0000277Sek. (0,0000277+36000=0,9972). Aber leider wird's dadurch auch nicht besser. 542,5ns sind 0,0000005425Sek., mal 51 sind 0,0000276675Sek.

    http://www.c-control-pro.de/document...imer_t3pwm.htm

    Code:
    #define PWM_IR 35
    #define IR_left 27
    #define IR_right 29
    #define TSOP 26
    
    Sub main()
        PRO_BOT128_INIT()
    
        Port_DataDirBit(PWM_IR,PORT_OUT)
        Port_DataDirBit(IR_left,PORT_OUT)
        Port_DataDirBit(IR_right,PORT_OUT)
        Port_DataDirBit(TSOP,PORT_IN)
        // Timer_T3PWM(51,25,PS_8) // Timer nicht aktivieren
    
            Port_WriteBit(PWM_IR,PORT_ON) // Anoden High         
            Port_WriteBit(IR_left,PORT_OFF) // Kathoden Low        
            Port_WriteBit(IR_right,PORT_OFF)
    
        Do While True
        End While
    
    End Sub
    So müßten 2*0,007mA durch OC3A fliesen. Wenn das klappt kann man wieder ohne aktivierten Timer in der Hauptschleife den OC3A "von Hand" togglen. OC3A ein, Periodendauer warten, OC3A aus, Periodendauer warten usw. Nach jedem Durchgang kann man den TSOP abfragen und den Status an einer LED ausgeben.

    Gruß

    mic
    Geändert von radbruch (15.11.2011 um 22:27 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2011
    Beiträge
    9

    Beitrag

    Mir ist grad das Herz in die Hose gerutscht :O
    Hab aber grade nochmal genau nachgeschaut:
    es ist so Belegt wie erst geschrieben,
    OC3A ist 35
    PD5 ist 29
    PD3 ist 27

    OC3A lässt sich auch mit dem code


    Code:
    #define PWM_IR 35
    #define IR_left 27
    #define IR_right 29
    #define TSOP 26
    
    Sub main()
        PRO_BOT128_INIT()
    
        Port_DataDirBit(PWM_IR,PORT_OUT)
        Port_DataDirBit(IR_left,PORT_OUT)
        Port_DataDirBit(IR_right,PORT_OUT)
        Port_DataDirBit(TSOP,PORT_IN)
        // Timer_T3PWM(51,25,PS_8) // Timer nicht aktivieren
    
            Port_WriteBit(PWM_IR,PORT_ON) // Anoden High         
            Port_WriteBit(IR_left,PORT_OFF) // Kathoden Low        
            Port_WriteBit(IR_right,PORT_OFF)
    
        Do While True
        End While
    
    End Sub
    nicht einfach auf High schalten.

    Gruß

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Probot128 Motor?
    Von pro-bot128 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 11
    Letzter Beitrag: 30.04.2014, 11:49
  2. ProBot128 Syntax Fehler EOF in BASIC
    Von Wombatz im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 19:44
  3. ProBot128 zieht nach rechts
    Von Alexander Krauss im Forum Mechanik
    Antworten: 4
    Letzter Beitrag: 06.07.2011, 07:15
  4. ProBot128 blinkt nur LEDs und piepst
    Von Robo_Noob_ im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 8
    Letzter Beitrag: 15.10.2009, 13:31
  5. Probot128: Widerstand fehlt!
    Von Jojoce im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 10
    Letzter Beitrag: 20.09.2009, 15:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen