- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: Motorstrom an L298 trotz PWM messen

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Na gut

    Was genau ist der AC ? Vielleicht kann ich ja helfen ?
    Alles wird gut... Gruß Alex

  2. #22
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    40
    Beiträge
    214
    Der "Analog Comparator".

    Ich hab da keine genauen Infos über die Software-Ansteuerung.
    Beispiele in Bascom sind leider ziemlich rar gesät.

    Der AC soll permanent messen und den Ausgabewert im "ACO"-Register jederzeit auslesbar sein.
    Vielleicht verwende ich auch stattdessen den ACO-Interrupt - je nach dem was sinvoller ist.

    Ich hab zwar schon was zusammengestellt, aber so richtig tuts noch nicht.
    Darum kann ich mich aber leider erst am Wochenende kümmern.
    Meinen Code gibt's dann auch.

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Vielleicht habe ich es überlesen, aber welchen Proz nimmst Du eigentlich ?
    Alles wird gut... Gruß Alex

  4. #24
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    40
    Beiträge
    214
    Einen ATMega8 mit 16 MHz-Quarz.

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    25.09.2007
    Ort
    Oldenburg
    Alter
    50
    Beiträge
    80
    Hi,

    ich hab´s gerade mal im Datenblatt überflogen. Sinnvoller wäre es doch, wenn Du das Bit ACO nicht abfragen musst, sondern einen Interrupt bekommst, wenn Überstrom kommt. Sonst könnte es ja sein, daß Du den Überstrom übersiehst. Um das einzustellen, musst Du doch nur ein paar Register setzen, das mache ich immer direkt, weil in Bascom oft kleine Fehler drin sind. So z.B. das ACME Bit in SFIOR:

    Set SFIOR.ACME 'AC Mux enable
    ACSR =&B01011110

    Und so weiter. Das sollte eigentlich funktionieren. Also das Datenblatt ab Seite 190 genauestens durchlesen und die Register entsprechend setzen. An dieser Stelle einfach mal kein Bascom. Das nimmst Du dann nur für die ISR und zum Interrupt löschen.
    Alles wird gut... Gruß Alex

  6. #26
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2006
    Beiträge
    734
    Ich habe gerade noch einen Thread unter mikrocontroller.net gefunden. In diesem wird die genaue auslegung des rc-glieds behandelt, voraussetzungen ähnlich wie hier.
    http://www.mikrocontroller.net/topic/80643

    Nur falls mal jemand über diesen Thread stolpert

  7. #27
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    40
    Beiträge
    214
    Also ich hab jetzt mal probiert das mit Skragans Befehlen zu machen, aber es funktioniert genausoweinig wie mit den BASCOM-Befehlen.

    Das Problem ist, dass die Aci_Isr ständig gefeuert wird, obwohl ich mit dem Multimeter am Pin AIN0 = 0V und an AIN1 = 500 mV messe.
    Referenz ist also im Moment 500 mV.
    Solange der Motor abgeschaltet ist, liegt die Spannung an AIN0 also natürlich unter AIN1.
    Trotzdem startet die ISR ständig.

    Hier mal die relevanten Code-Stücke:

    Code:
    Set SFIOR.ACME 'AC Mux enable
    ACSR = &B01011011 'sollte ISR=Ein, Timer1-Verbindung=Aus und Flanke=Rising sein...
    
    On Aci Aci_isr                                              'Interrupt Vektor
    'Start Ac                                                    'Comparator-Überwachung starten
    'Enable Aci                                                  'ACI-Interrupt aktivieren
    
    Config Pind.6 = Input                                       'Analog-Comparator: Motorstrom-Messung (Spannung über Shunt)
    Config Pind.7 = Input                                       'Analog-Comparator: Referenz für Motorstrom (500 mV, was ca. 1,85 A entspricht.
    
    'Für ANTRIEB (Buchse A)
    Config Pind.4 = Output                                      'Antrieb Kanal 1
    Config Pind.5 = Output                                      'Antrieb Kanal 2
    Config Pinb.1 = Output                                      'Antrieb PWM
    
    AntriebPWM Alias Pwm1a                                      'Antrieb-Einstellung (PWM)
    
    'MOTOR-ÜBERSTROM-SCHUTZ
       Aci_isr:                                                 'ISR-Routine für Motor-Überstrom
          AntriebPWM = 0
          print "MOTOR_OVERLOAD"
          waitms 500
    Ich weis nicht ob ich den Bit-Code für das ACSR-Register richtig gesetzt habe.
    Ich möchte den Interrupt für den AC verwenden, bei steigender Flanke auslösen und keine Verbindung mit Timer1 haben.

    Den Schaltplan und den kompletten Programm-Code hab ich angehängt.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken unimog-mainboard-schaltplan_141.jpg  
    Angehängte Dateien Angehängte Dateien

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2008
    Beiträge
    319
    Moin,
    ich hol das einfach noch mal hoch, selbes Problem .

    Ich Steuere 2 DC Mototen über den L298, als Messwiderstand habe ich wie gewohnt einen 0,47 ohm 5W Widerstand verbaut... Das signal ist aber derbe verrauscht und eine Idee wie man an das geschickt auswertet habe ich auch noch nicht... wie macht das denn der L297 mit der Strombegrenzung?

    Bild hier  

    Gelb ist das PWM vom µC am L298, Blau die Spannung am Messwiderstand... der Motor sollte eigentlich nach Datenblatt intern Entstört sein...

    Habe irgend wo was von einem RC Filter gehört mit 0,1uF und 10K Ohm wäre ein fg = 159.15 Hz, da ich ja mit 250Hz PWM den Motor betreibe habe ich ihn mit 4,7K ohm ausgelegt macht ein fg = 338.63Hz... macht aber irgendwie keinen unterschied ob mit oder ohne RC Filter. Wirklich brauchen tu ich das nicht aber wäre fein wenn es Funktionieren würde

    lg

  9. #29
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn ein DC Motor Entstört ist, heißte dass vor allem das es nicht mehr so viele HF Störungen bei Frequenzn im MHz bereich und darüber gibt. Die Störungen bei niedreigeren Frequenzen hat man weiter, und kann sie auch kaum vermeiden.

    Bei der Schaltung mit dem L297 hat man in der Regel Schrittmotoren und daher kaum Störungen. Sonst ggf. auch einen RC Filter.

    Der RC Filter soll die Störungen nur vom AD Wandler fernhalten und dem ein schon geglättetes Signal geben. Ein Tiefpass mit run 300 Hz sollte da schon was dran ändern. Das letzte Bischen muß dann der µC durch mitteln erreichen.

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2008
    Beiträge
    319
    mmm ok danke erst mal,
    da mein ~330 Hz Filter keine Änderung bringt... mmm ja wie kann man dem breiten Signal noch entgegen wirken? Oder besser warum ist das so breit?

    lg

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

12V Akku bauen