- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: ATMEGA32 mit 2 IR-LEDs

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi pinsel,

    also ich seh in Deinem Code keine Timerinitialisierung für die LED. Vorbehaltlich der Tatsache, dass ich mit dem mega168 arbeite - OC1A steuert bei mir den PB1 - sende ich Dir als Anhalt für Deine Programmierung meine Codeschnippsel. ACHTUNG - bei Dir/beim mega32 geht OC1A auf Pin19/PD5 - und es ist natürlich/vermutlich die Initialisierung mit anderen Registerwerten durchzuführen.

    Die Anschlüsse an MEINEM mega168:
    Code:
    --------------------==========-----------------------
    Vorgesehene/belegte Anschlüsse am (ATMega168)-R2D03:
                ==================                        (für ´168 d = Drive/Director)
                       /RESET   1   28   PC5,(SCL)
                    RxD,(PD0)   2   27   PC4,(SDA)   
                    TxD,(PD1)___3   26___PC3, ADC0 / Sharp GP2D120
      (SigMot1) ExtINT0,(PD2)   4   25   PC2, SFH 5110, IN irDME 4   } vorgesehen
      (SigMot2) ExtINT1,(PD3)   5   24   PC1, SFH 5110, IN irDME 3   } evtl. auch in
      (E7)  _|-- 3,4 Guz, PD4___6   23___PC0, SFH 5110, IN irDME 1-2 } ´168 n
                          VCC   7   22   GND
                          GND   8   21   AREF
                   XTAL1  PB6___9   20___VCC
                   XTAL2  PB7  10   19   PB5, Startblink (LED0), 3sec v Tmr0, Mehrzweck
      (E6) PWM 1,2 uz+Guz,PD5  11   18   PB4  _|-- 3,4  uz  (E4) (hier oder PB3)
      (E5) PWM 3,4 uz+Guz,PD6___2   17___PB3, Reserve 2
      (E8)   _|-- 1,2  uz,PD7  13   16   PB2, Reserve 1
      (E9)   _|-- 1,2 Guz,PB0  14   15   PB1  SFH 415, OUT (irDME)                    */
    /* ============================================================================== */
    Die Timerinitialisierung zusammen mit der Subroutine, mit der OC1A gestellt wird, Basis ist ein Prozessortakt von 20 MHz:
    Code:
    /* ============================================================================== */
    /* ==  PWM-Routinen zur IRLED-ansteuerung auf OC1A/PB1    ======================= */
    void TC1SRV_init(void)	//Init Timer/Counter 1, PWM-Signal 
    {                                 //       normale PWM aktivieren (nicht invertiert)
       TCCR1A |= (1<<COM1A1);         //Clear/set OC1A on Compare Match, doc S132.
    				  //   Edit: hier war ein falscher Kommentar
    //   TCCR1A |= (1<<WGM11);        //WGM10=0 => PWM, Phase Correct,         doc S 133
       TCCR1B |= (1<<CS10);           // cs10 <=> clk/1 => no prescaling       doc S 134
       TCCR1B |= (1<<WGM13);            // PWM, Phase+Frequency correct     doc S 134
       ICR1    = 270;                 // =>PWM-Frequenz 20MHz/(2*nn) => 37,0kHz/
    /* Interrupts für Timer2 deaktivieren. Siehe Registerbelegung :
    mega168   Bit7       6        5         4         3         2        1        0
    TIMSK1      –        –      ICIE1        –         –       OCIE1B   OCIE1A   TOIE1
    im m168     ?        ?        ?         ?         ?         ?        ?        ?   */
    //
       TIMSK1 &= ~(1<<OCIE1A)|(1<<OCIE1B);	// Tmr/Cntr1 Oput CompA/B Mtch intrrpt disab
       TIMSK1 &= ~(1<<TOIE1);		// Tmr/Cntr1 Overflow interrupt disabled
    }
    /* ============================================================================== */
    void setSRV1(uint16_t speed1)           //Relative Pulslänge auf OC1A/PB1
    {OCR1A = speed1;}                       //  z.B. für SFH5110 oder Servo
    /* ============================================================================== */
    Übrigens fahre ich aus bestimmten Gründen mit 37 kHz, das müsstest Du entsprechend anpassen. Die setSRV1 wird mit dem gewünschten Parameter aufgerufen.

    Aufruf Timerinitialisierung aus main:
    Code:
        TC1SRV_init();	//Init Timer/Counter1 37,xkHz am 21feb08, 17:28
    Der Rest sollte Dir ja geläufig sein. Nochmal - wenn Du Teile dieses Codes verwendest, musst Du die Register an Deinen mega32 anpassen!!!
    Ciao sagt der JoeamBerg

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Danke Nachbar,

    ich werd's mir mal Schritt für Schritt zu Gemüte führen - ist ja nicht gerade sooo einfach...

  3. #13
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Ich habe mich jetzt an folgendem Ablauf versucht:

    Der Asuro soll einen Fixen Abstand zu einem Gegenstand einhalten, egal ob wie der Gegenstand sich bewegt. Wenn der GST sich wegbewegt, soll der Asuro folgen, wenn der GST näherkommt, soll der Asuro zurückweichen. Wie ein Hund, der einen Einbrecher gestellt hat

    Nur läuft es nicht so, wie ich's gerne hätte:
    Code:
    /*************************************************************************
    
    	Hauptprogramm
    
    *************************************************************************/
    
    int main(void)
    {
       	uint8_t n,m,diff;
       
       	Init();
    
    	FrontLED(ON);
       	while(1)
    	{
    	   	n=abstand_rechts();
    		m=abstand_links();
    	   		
    		if ((n > 2) && (m > 2))
    	   	{
    	   		diff = m - n;
    
    			if(abs(diff) > 0)
    			{
    				MotorDir(FWD, FWD);
    				MotorSpeed(255,155);
    			}
    			if (abs(diff) < 0)
    			{
    				MotorDir(FWD, FWD);
    				MotorSpeed(155,255);
    			}
    		}
    		else if ((n < 2) && (m < 2))
    		{
    	   		diff = m - n;
    
    			if(abs(diff) > 0)
    			{
    				MotorDir(RWD, RWD);
    				MotorSpeed(155,255);
    			}
    			if (abs(diff) < 0)
    			{
    				MotorDir(RWD, RWD);
    				MotorSpeed(255,155);
    			}
    		}
    		else
    			MotorSpeed(BREAK, BREAK);
    	}
    }
    Wo ist mein Denkfehler?

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Auch auf die Gefahr hin, in diesem Threat Selbstgespräche zu führen habe ich das o. a. Programm etwas überarbeitet:
    Code:
    /************************************************************************* 
    
       Hauptprogramm 
    
    *************************************************************************/ 
    
    int main(void) 
    { 
          uint8_t n,m,diff; 
        
          Init(); 
    
       FrontLED(ON); 
          while(1) 
       { 
          n=abstand_rechts(); 
          m=abstand_links(); 
                 
          if ((n > 2) || (m > 2)) 
             { 
                StatusLED(GREEN);
    			MotorDir(FWD, FWD); 
                MotorSpeed(100,100); 
             } 
           
          else if ((n < 2) || (m < 2)) 
              { 
                StatusLED(RED);
    			MotorDir(RWD, RWD); 
                MotorSpeed(100,100); 
             } 
          
          else 
             MotorSpeed(BREAK, BREAK); 
       } 
    }
    Damit hält der Asuro einen bestimmten Abstand zu einem Hindernis ein, dass sich entfernt bzw. auf ihn zubewegt - allerdings ohne sich seitlich zu bewegen.

    Ich möchte nun einbauen dass sich der Asuro immer mit beiden "Augen" auf das Hindernis ausrichtet und den Abstand beibehält.

    Hätte ev. einer von euch einen Tipp, wie ich dies machen könnte?

    Danke in voraus für eure Unterstützung.

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Hallo pinsel120866,

    irre ich mich, oder ist das nicht die gleiche Aufgabe wie in dem Thread von raid_ox ? Der hatte dort auch einen Codeabschnitt veröffentlicht. Hattest Du dort nicht auch schon mal gepostet?
    Ciao sagt der JoeamBerg

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Hallo Oberallgeier,

    du irrst dich nicht, allerdings kann ich den Code von Raid nicht auf meine Anforderung übertragen, ich hab's versucht aber leider ohne Erfolg.

    Da ich ja im Programmieren nicht gerade der Beste bin, hab ich trotzdem mal versucht selber einen passenden Code zu erstellen.

  7. #17
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Hallo Miteinander,

    der Vollständigkeit halber habe ich ein Video meiner Erweiterung hier abgelegt:

    http://de.youtube.com/watch?v=zOv8ilG39kc

  8. #18
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Aber hallo, nicht mal zwei Monate - und dann DER Fortschritt. Klasse! (Im Hintergrund hört man jetzt rauschenden Beifall). Im Ernst, ich finde das s..gut! Und die Bande hält ja auch vielfach höhere Geschwindigkeiten aus - da ist also schon wieder ein Fortschritt absehbar.

    PS: So was kann mein asuro nicht.
    Ciao sagt der JoeamBerg

  9. #19
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    57
    Beiträge
    847
    Lieber Nachbar,

    auch wenn mich das leise Gefühl beschleicht dass bei deiner Antwort eine kräftige Portion Ironie drinsteckt, danke ich dir sehr herzlich für das Lob!

    Ich versuche nur mit meinen sehr begrenzten Mitteln die Technik der kleinen Schritte anzuwenden, was auch nur kleine Erfolge zulässt.

    Wer weiß, vielleicht werde ich mal DerAltevom(Rhein)Tal.

  10. #20
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Nein - wirklich nicht - keinerlei Ironie. Fällt mir garnicht ein. Wie gesagt - so etwas kann mein asuro nicht - warum wohl - weil ICH so ein Programm nicht hinkrieg.

    ... Wer weiß, vielleicht werde ich mal DerAltevom(Rhein)Tal.
    Immerhin wäre das ein Titel der keinen so entsetzlich schlechten Ruf hat. Obwohl ich mich mit dem früheren Träger des gleichen Namens in keinerle Weise ähnlich fühle oder gar ähnlich sein wollte.

    [OT] Alt wird man von selbst - weil die Zeit nix anderes zu tun hat als zu verstreichen. Aber ob man was lernt und kann . . . [/OT]
    Ciao sagt der JoeamBerg

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress