- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Atmega 8 startet unkontrolliert neu.

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2010
    Beiträge
    13

    Atmega 8 startet unkontrolliert neu.

    Anzeige

    Praxistest und DIY Projekte
    Hallo liebe Roboternetz community.

    Ich habe folgendes Problem, wenn ich versuche die Motoren anzusteuern zucken sie nur kurz und der Mikrocontroller startet neu. Zumindest verlässt er die Endlosschleife arbeitet den Teil davor ab und geht wieder in die Endlosschleife. Das PWM Signal bleibt manchmal erhalten und manchmal verschwindet es, manchmal laufen sie auch problemlos aber eher selten. Das ganze wirkt sehr zufällig.
    Der Aufbau meiner Schaltung sowie den Schaltplan der Mikrocontrollerplatine habe ich als Skizze angehängt da es schwer zu erklären ist.
    Als ich den L7805 an meinem Labornetzteil betrieben habe und nur die Motorspannungsversorgung über die Batterie lief das ganze / läuft das ganze wunderbar. Masse war natürlich verbunden.
    L7805 ist nach Datenblatt beschaltet.
    Zur Hardware:
    Motorcontroller ist ein RN2V2 Dualmotor
    Foxboard G20 über I²C mit einem Atmega 8 verbunden.
    Motoren sind folgende: http://www.conrad.de/ce/de/product/1...266-12-61-BFEC
    Habe es auch schon mit drosselspulen in der Motorleitung versucht leider ohne Erfolg.
    PWM Frequenz ist 2KHz habe es auch mit 15KHz versucht, selbes Phänomen.

    Im Voraus vielen Dank für eure Hilfe.
    Mit freundlichen Grüßen
    Striker1985
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken AufbauSkizze.png   schaltplanmc.jpg   P1010423.jpg   P1010424.JPG   P1010425.JPG  


  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2010
    Beiträge
    13
    Hier noch die restlichen Bilder.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken P1010426.jpg   P1010427.jpg   P1010430.jpg  

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    53
    Beiträge
    2.803
    ...hast Du das Problem auch bei abgezogenem RS232/ISP ?
    Die durch den Transistor geschaltete Reset-Leitung fällt mir als Kandidat auf...

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2010
    Beiträge
    13
    Hallo Andree-HB,

    Ich werde es heute Abend direkt testen, glaube aber das das Problem auch mit abgezogenem RS232 Kabel da war.
    Was ich allerdings vergessen habe zu erwähnen ist das das ganze super funktioniert wenn ich am RN2V2 die Motoren abklemme und nur schaue ob ein PWM signal anliegt. Sobald ich die Motoren anschließe egal ob einen oder beide fängt das Problem an. Auch bleibt wie erwähnt während diesem "reset" das PWM Signal manchmal erhalten auch wenn die Motoren nicht drehen. Drücke ich aber den Reset Taster ist das signal direkt weg.

    Mit freundlichen Grüßen
    Striker1985

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Hast du schon versucht die Reset Leitung mit einem 100nF Kerko zu entstören?
    Du könntest auch noch versuchen den µC mit einem Elko zu puffern. Sollte das nicht funktionieren mit einer Diode den Hauptstromkreis (Motoren) vom µC Kreis zu trennen und den µC dann mit einem Elko stützen. Die Diode ist dafür da das die Motoren nicht den Pufferellko für den µC "leersaugen".

    MfG Hannes

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Ich gehe davon aus dass dein Akku voll ist?
    Nam et ipsa scientia potestas est..

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von striker1985 Beitrag anzeigen
    ... der Mikrocontroller startet neu .... Das ganze wirkt sehr zufällig ...
    Ich habe generell in meiner main eine Blinkroutine - nach der Portdefinition und VOR jeglichen anderen Initialisierungen und VOR dem Erlauben von Interrupts. An der spezifischen Frequenz (ca. 0,1 sec) und der Anzahl der Blinkies kann ich eindeutig irgendwelche zufälligen Resets erkennen. Siehe Codebeispiel zwischen den "Ausrufungszeichen". Ich habe auch eine Testroutine die nur fallweise eingeklinkt wird und entsprechende Signalfolgen mit unterschiedlichen Blinkzeichen generiert, je nachdem, welcher Resetvektor gerade angesprungen wurde. Damit finde ich mich bei ähnlichen Fehlersuchen relativ schnell zurecht.
    Code:
    // ============================================================================== =
    // ===  HAUPTProgramm =========================================================== =
    // Initialisierungen, LED1 kurzblinken als Signal für Programmstart,
    //   Ausgabe des Identifizierungsstrings per USART 
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                             
     int main(void)
     {                      //
    // Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
    //   A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
      DDRB  = 0b00011111;   // siehe aktuell oben oder Fortschritt/R2D2
      PORTB = 0b00100000;   //    und Port/Pull Ups (1)  aktivieren
      DDRC  = 0b01110000;   // PC3 ist ADC3, PC0 .. 6 , kein PC7-Pin bei m168
      PORTC = 0b00000111;   // Beachte für ADC: PC3 ist ADC-Eingang ##>> OHNE Pullup !!
      DDRD  = 0b11110000;   // -> siehe unter DDRB,  sowie PD2,3 extInt
      PORTD = 0b00001111;   //    Pull Ups aktivieren
                            //   Encoder_1 = ExtINT0 = PortD2, Encoder_2 = PortD3
    //  Dadurch Initialisierung der Anschlüsse für miniD0 auf mega328: - - - - - - - -
    //          /RESET,PC6   1 A   A 28   PC5,(SCL), gLED
    //             RxD,PD0   2 EU  A 27   PC4,(SDA), rLED
    //             TxD,PD1___3 EU  E 26___PC3, ADC0=GP2D120
    // SigMot1/ExtINT0,PD2   4 EU EU 25   PC2, SFH 5110, IN irDME 4     Rechts
    // SigMot2/ExtINT1,PD3   5 EU EU 24   PC1, SFH 5110, IN irDME 3     Links
    //   _|-- 3,4 Guz, PD4___6 A  EU 23___PC0, SFH 5110, IN irDME 1-2   Mitte
    //     - - - - - - Belegung Pinne - - - - - - - - -
    //          XTAL1  PB6___9 EU    20___VCC
    //          XTAL2  PB7  10 EU EU 19   PB5, SCK, Taster2
    //  PWM 1,2 uz+Guz,PD5  11 A   A 18   PB4, MISO,  _|-- 3,4  uz, (Taster1)
    //  PWM 3,4 uz+Guz,PD6__12 A   A 17___PB3, MOSI, Reserve 2
    //    _|-- 1,2  uz,PD7  13 A   A 16   PB2, Servo
    //    _|-- 1,2 Guz,PB0  14 A   A 15   PB1, OC1A = SFH 415, OUT (irDME)
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    // ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
      for(i=0; i<10; i++)   // LED/PC5 blinkt i-mal ##>> bevor Interrupts erlaubt sind
                            //   um ungewollte Resets u.ä. erkennen zu können
      {                       
        SetBit(PORTC, 5);   // LED auf PC5 schalten EIN, HELL
        waitms(3);          //    ... damit man kurze resets besser erkennt
        ClrBit(PORTC, 5);   // LED auf PC5 schalten AUS, Dunkel
        waitms(97);         //
      }                     // Ende von for(i=0; i<10; i++)
    // ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    //      Es folgen Initialisierungsroutinen, z.B.:
      init_USART0(MYUBRR);  //USART0 initialisieren mit wählbarer Baudrate (s.o.)
      XTI_0_1_init();       //Initialisiere den externen Interrupt 0 und 1
                            //
      sei();  //Globalen Interrupt freigeben
                            //
    //      .....
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    33
    Beiträge
    1.192
    Hallo,
    ich würde darauf tippen, dass die Versorgungsspannung aufgrund der Einschaltströme der Motoren einbricht.
    Auf den Foto mit dem 7805 erkenne ich nur Keramikkondensatoren, da würde ich auf der 12V-Seite noch eine Diode + einen Elko (>100µF) einbauen, damit die Versorgung des Controllers eine gewisse Zeit unterbrechungsfrei ist.
    Grüße,
    Bernhard

    edit: Das hat 021aet04 schon geschrieben
    Geändert von BMS (21.01.2012 um 10:48 Uhr)

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2010
    Beiträge
    13
    Vielen dank für eure Antworten.
    Ich fange mal von vorne an zu antworten.

    Ohne RS232 Kabel passiert genau das selbe.

    Hannes,
    ich bin Elektrotechnisch nicht vom Fach habe mir das alles durch viel lesen und nachfragen angeeignet.
    Ich habe noch keinen Kondensator in der Reset Leitung. Muss mal schauen ob ich einen Kerko mit dieser Kapazität habe, Folienkondensatoren habe ich auf jeden Fall wären diese auch ok?
    Was meinst du genau mit dem trennen der Motoren und dem MC durch eine Diode? Wie soll sie genau verbaut werden?
    Welche Diode würdest du dazu empfehlen? Ich habe 1N4001, 1N4936 und Z Dioede 5,1V 3,1W da alles andere müsste ich bestellen.

    BMS,
    an dich die selbe Frage bezüglich der Diode, ist eine von den obigen geeignet wenn nicht welche wäre es und wie soll sie genau sperren?
    Ich habe Elkos in > 100µF
    470µF und 1000µF gillt da das Motto viel hilft viel oder lieber eine andere Größe?

    oberallgeier,
    ich habe eine ähnliche Blink LED wie in deinem Vorschlag sie blinkt vor dem eintreten in die Endlosschleife 5x mit 5Hz und während dem normalen Betrieb im 1Hz Takt. Daran habe ich auch den "Neustart" erkannt.

    Ich habe auch ein Oszi zur Verfügung bin aber mit dem Umgang noch nicht so sicher also wenn sich damit etwas besser Analysieren lässt bin ich für anregungen offen.

    Mit freundlichen Grüßen
    Striker1985

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    Das du nicht vom Fach bist macht nichts. Wichtig ist nur das Interesse.

    Bei der Diode kannst du jede beliebige Diode nehmen mit Ausnahme von Z-, Zener- oder Spannungsreferenzdioden. Du kannst also eine normale Gleichrichterdiode (z.B. 1N400x Serie wie deine 1N4001) oder eine Schottky Diode (ist aber nicht nötig). Die Diode dient hier nur dazu das sich der Kondensator nicht entlädt.

    Du musst die Motoren direkt vom Akku versorgen. Den µC musst du vom Aku über eine Diode versorgen. Anschließend musst die Versorgung des µC puffern. Das sieht so aus: Batterie => Diode => Kondensator und µC

    Welche Kapazität der Kondensator hat ist nicht so genau. Du kannst für den Versuch den 470µF und/oder 1000µF nehmen.

    Mit dem Oszi kannst du das am Besten im Single Shot Modus anschauen. Ich würde Single Shot Modus mit falling Edge (fallender Flanke) einstellen. Die Spannung würde ich etwas unter die Versorgungsspannung stellen. Sollte die Spannung einbrechen wird automatisch der Single Shot ausgelöst. Du kannst dann schauen ob und wie weit die Spannung einbricht. Bei der Zeit musst du dich herantasten.


    MfG Hannes

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. ATMega 2560 startet gelegentlich neu
    Von chris@franke im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 16.02.2010, 05:10
  2. ATmega32 startet nicht
    Von Feratu im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 12.01.2010, 13:23
  3. AVR startet bei Interrupt neu
    Von Jaecko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 25.02.2007, 14:37
  4. Atmel startet nicht!
    Von corny335 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 18.07.2005, 17:49
  5. TU Chemnitz startet Roboterwettbewerb
    Von Frank im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 06.06.2005, 13:22

Berechtigungen

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

LiFePO4 Speicher Test