-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Wie funktioniert der IC L293 D

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.09.2006
    Beiträge
    114

    Wie funktioniert der IC L293 D

    Anzeige

    Hallo,

    ich durchplane gerade meinen ersten Roboter:
    Er soll erst einmal nur durch das Zimmer fahren können und Hindernissen auf Berührung ausweichen können.
    Ich habe noch zwei kleine Motoren mit einem Drehmoment von 1,2 N/cm hier liegen, die möchte ich benutzen.
    Für die Ansteuerung der Motoren möchte ich den IC L293 D benutzen.
    Kann ich einfach in Pin 8 von diesem IC die Versorgungsspannung von 9V leiten? Das hat mich etwas gewundert als ich zum ersten Mal einen Schaltplan von diesem IC gesehen habe. Hält der das aus?
    Und die Motoren hänge ich dann einfach zwischen die Pins 3 und 6, bzw. 11 und 14. Da muss anscheinend auch kein Kondensator oder so was dazwischen, richtig?
    Die Pins 1, 2, 7, 9, 10 und 15 verbinde ich dann einfach direkt mit Pins des Controllers, so weit richtig?
    Die Controller-Pins, die zu den Pins 2, 7, 10 und 15 führen, lasse ich dann einfach zuerst in Ruhe und verändere gar nichts, im Programmcode, wenn ich die Richtung der Motoren nicht ändern möchte.
    Aber was ist mit dem anderen beiden Pins 1, bzw. 9?
    Was muss ich damit machen?
    Ich habe versucht das im Roboternetz-wiki zu verstehen:
    Demnach kann ich, wenn ich die einfach ständig auf 1 stelle, den Motor auf voller Leistung laufen lassen. Wenn ich z.B. im Programm reinschreiben, dass er jede Millisekunde den Zustand einmal wechselt, habe ich nur noch halbe Leistung. Usw.

    So, ich hoffe ich habe euch mit meiner Zusammenfassung nicht genervt, aber ich möchte trotzdem wissen, ob das so wie ich meine, alles richtig ist, damit ich wenn ich das dann zusammenbaue nicht sofort der Controller kaputt geht.

    Vielen Dank für eure Mühen.

    Thomas

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Mit Pin 1 sagst du das der Motor in Betrieb gehen soll, wenn du dein Signal auf Pin 9 legst dreht der Motor in die andere Richtung. Schau dir das Datenblatt vom L293B da ist das etwas übersichtlicher, die Pin sind allerdings anders.
    Hubert

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.09.2006
    Beiträge
    114
    Ok, danke. Dann scheint das ja soweit richtig zu sein.

    Aber wenn ich Pin 1 regelmäßig immer umschalte, dann müsste ich doch nur noch die halbe Leistung haben, oder?

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Wenn du PWM-Steuerung machst, legst du diese an Pin 1, auf Pin 2 und 9 gibst du die Drehrichtung vor.
    Du hast theoretisch die halbe Leistung.
    Hubert

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.09.2006
    Beiträge
    114
    Äh, was ist denn jetzt PWM? Ich verstehe nichteinmal denArtikel im Wiki komplett...

    Könnte man das in Bascom nicht so in etwa lösen?

    Code:
    WaitMS 1
    Porta.1 = 0
    WaitMS 1
    Porta.1 = 0
    Wo ist das Problem, wenn man das einfach so macht?


    Das mit der Drehrichtung ist klar. Ich frage mich nur, wie ich die Leistung richtig kontrollieren kann.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    28
    Beiträge
    718
    wenn dann...

    WaitMS 1
    Porta.1 = 0
    WaitMS 1
    Porta.1 = 1

    Aber das ist viel zu langsam, du brauchst da schon PWM.
    Am besten über Hardware PWM, dass spart µC Performence wärend dein Bot durch die Gegend fährt
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.09.2006
    Beiträge
    114
    Aha, danke

    Und wie geht das? Ich weiß noch nicht mal, wie das mit Software geht. Wie geht es dann mit Hardware?

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    der atmega kann ein pwm erzeugen, ohne dass du dich darum kümmern musst. mit deiner methode ist der µC voll ausgelastet, und du kannst nichts anderes machen. schau dir im datenblatt die timer an.

    Code:
       ldi  temp,  (1<<WGM20)|(1<<COM21)|(1<<CS20)
       out  TCCR2, temp
    
       ldi temp,127
       out  OCR2, temp
    damit hast du ein 50% pwm an port OC2 (port B3 am atmega 8 ).

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Berlin
    Alter
    36
    Beiträge
    69
    Dazu müsste man wissen was du für nen µC (ich gehe mal dar von aus das du einen at hast).
    Im Datenblatt steht mir Sicherheit 8Bit Timer/Connter dort stehen einige Register beschrieben.
    Beim beim ATMega8 (ich habe schon ewig nichts mehr in Bascom gemacht )

    Tccr1a = &B10000001 'Pin OC1A nicht invertiert, 8-Bit-
    Tccr1b = &B00000010 'PWM phasenkorrekt, Timer1 1/8

    Aber das must dir für deinen µC ansehen. Und das Programm vervollständigen.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Berlin
    Alter
    36
    Beiträge
    69
    Ich habs Porbirt so gut wie möglich zu machen aber ich kann keine gewer geben

    Code:
    $regfile = "m8def.dat"                                      'ATmega8-Deklarationen
    $crystal = 3686400                                          'Verwendeter Quarz: 3,6864 MHz
    
    Ddrb.1 = 1                                                  'Pin PB1/OC1A ist Ausgang
    
    Ddrd.0 = 0                                                  'Port D1 ist Eingang
    
    
    Tccr1a = &B10000001                                         'Pin OC1A nicht invertiert, 8-Bit-
    Tccr1b = &B00000010                                         'PWM phasenkorrekt, Timer1 1/8
    
    Ocr1al = 127                                                'PWM = ca.50%
    
    Dim Temp As Byte                                            'temp Register
    
    Temp = Ocr1al                                               'kopire timer in temp
    
    Do                                                          'Hauptschleife
                                                                'ist pin D1 = 1 dann
    If Pind.1 = 1 Then                                          'temp + 2
       Temp = Temp + 2                                          'warten wegen prellen (taster
    Waitms 20
    End If
    
    Ocr1al = Temp                                               'kopire trmp in timer
    
    loop
    ich hoffe das man das erkenen kann!!!
    (auch die kometare)

    MFG
    Das Novj

    @ robocat mir wär asm auch lieber

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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