-
        

Ergebnis 1 bis 5 von 5

Thema: Enable in H-Brücken hinzufügen

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400

    Enable in H-Brücken hinzufügen

    Anzeige

    Hallo,

    ich habe folgende H-Brücke bei mir rumliegen (siehe anhang).
    das ist die Brücke von dem Cybot von realrobots. nun habe ich einen atmega8 angeschlossen das funktioniert soweit, bis jetzt auch ganz gut. nun wollte ich wissen ob man die platine so umbauen kann das man eine enable leitung hat.

    sprich meine vorstellung war, das ich jeweils für den motor rechts oder linkt eine richtung auf high setzte und dann über die enable leitung jeweils das pwm signal liefern könnte um den motor dann über die enable leitung zu steuern.

    was auch gut wäre wenn ich die vorwärts und rückwärts richtung mit einem port steuern könnte in dem ich dann nur z.b. vorwärts (high) und rückwärts (low) anlegen müsste. dann hätet ich nämlich nur 4 ports in gebrauch anstatt 6

    wäre dies möglich? und wenn ja wie?

    Danek schonmal und
    MfG Bammel
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken motorplatine_336.gif  

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.190
    Schau dir mal die Ansteuerung des Asuro an: http://www.arexx.com/downloads/asuro..._manual_de.pdf
    Du wirst nur einiges ändern müssen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Die Ansteuerung ist auch über die vorhandenen vier Anschlüsse möglich. Sie entsprechen von der Ansteuerung ja quasi einem L293 mit Enable fest auf high. Und den benutze ich auf meinem Roboter.
    Der Trick: für die Rückwärtsfahrt wird die PWM invertiert.

    Zufälligerweise arbeite ich auch mit nem M8, hätte also hier den gesamten Code für dich:
    Code:
    #include <avr/io.h> 
    
    //die Pins für die Richtungsumschaltung
    #define DIR_L_PIN_ON PORTD|=(1<<PD5)
    #define DIR_L_PIN_OFF PORTD&=~(1<<PD5)
    #define DIR_R_PIN_ON PORTD|=(1<<PD6)
    #define DIR_R_PIN_OFF PORTD&=~(1<<PD6)
    //PWM-Ports: links 1A (PB1) rechts 1B (PB2)
    
    
    #define vor   0b10100000
    #define rueck 0b01010000
    #define stop  0b00000000
    #define rdreh 0b01100000
    #define ldreh 0b10010000
    
    
    void initPWM(void)
    {
    TCCR1A = 0x00;
    TCCR1B = 0x00;
    //WGM10 = mode 1 = PWM Phase correct TOP=0x00FF, 8bit
    //COM1A1 und COM1A0 = 11 = (Table 38 pdf)
    // => OC1A high on upcounting compare match, low on downcouting compare match
    //COM1B1 und COM1B0 = 11 = (Table 38 pdf)
    // => OC1B high on upcounting compare match, low on downcouting compare match
    TCCR1A |= (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) | (1<<COM1B1) | (1<<COM1B0); //Timer konfigurieren
    
    //prescaler /8
    //TCCR1B |= (1<<CS11); 
    // /1024
    //TCCR1B|= (1<<CS12)|(1<<CS10);
    
    // /256
    TCCR1B|=(1<<CS12);
    
    //======>>> port als Ausgang schalten <<<======
    //pin B1 (OC1A) und pin 18 (OC1B) als ausgang schalten (ATmega8)
    DDRB |=(1<<PB1) | (1<<PB2);
    //Richtungsausggänge 
    DDRD |=(1<<PD5) | (1<<PD6);
    }  
    
    
    void PWM_L_non_inv(void)
    {
    TCCR1A|=(1<<COM1A1);
    TCCR1A&=~(1<<COM1A0);
    }
    
    void PWM_L_inv(void)
    {
    TCCR1A|=(1<<COM1A1)|(1<<COM1A0);
    }
    
    void PWM_R_non_inv(void)
    {
    TCCR1A|=(1<<COM1B1);
    TCCR1A&=~(1<<COM1B0);
    }
    
    void PWM_R_inv(void)
    {
    TCCR1A|=(1<<COM1B1)|(1<<COM1B0);
    }
    
    
    void setzeMotoren(uint8_t PWML, uint8_t PWMR, uint8_t DIR)
    {
    switch(DIR)
    {
    case vor:
    PWM_L_inv();
    PWM_R_inv();
    DIR_L_PIN_ON;
    DIR_R_PIN_ON;
    OCR1A=PWML;
    OCR1B=PWMR;
    break;
    
    case rueck:
    PWM_L_non_inv();
    PWM_R_non_inv();
    DIR_L_PIN_OFF;
    DIR_R_PIN_OFF;
    OCR1A=PWML;
    OCR1B=PWMR;
    break;
    
    case ldreh:
    PWM_L_non_inv();
    PWM_R_inv();
    DIR_R_PIN_ON;
    DIR_L_PIN_OFF;
    OCR1A=PWML;
    OCR1B=PWMR;
    break;
    
    case rdreh:
    PWM_R_non_inv();
    PWM_L_inv();
    DIR_R_PIN_OFF;
    DIR_L_PIN_ON;
    OCR1A=PWML;
    OCR1B=PWMR;
    break;
    
    case stop:
    default:
    PWM_L_non_inv();
    PWM_R_non_inv();
    DIR_L_PIN_OFF;
    DIR_R_PIN_OFF;
    OCR1A=0;
    OCR1B=0;
    
    } //end.case
    } //end.setzemotren
    Erst initPWM(); und dann mit setzeMotoren(uint8_t PWML, uint8_t PWMR, uint8_t DIR); ansteuern. PWML und PWMR sind die 8bit-PWM-Werte, DIR die Drehrichtung gemäß den Defines (vor rueck, ldreh,rdreh, stop)

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    hallo, danke für den tip mit dem asuro.

    @uwegw
    wenn das so klapptz würde ich das sogar bevorzufgen.
    das ding ist nur ich programmiere in bascom.
    nun weist ich ledier ncoh nciht da ich erst angefangen ahbe wie ich das pwm signal zu inventrieren soll bzw wie ich das dann auch die vier pins bekomme.

    den ich dachte jetzt das ich die enable signale an den oc1a/oc1b pins lege.

    und dann über einen pin jeweils rückwärs oder vorwärts wählöen kann. aber wenn ich cniht an der paltine fummeln müsste wäre es mir am liebsten.

    kannst du mir dass vllt so erklären das ich es in Bascom umsetzuten könne?

    mfg Bammel

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    hallo,
    ich komme heir einfahc cniht weiter.. wie müsste ich das den anschließen?

    ich hab nun links-vorwärts und recht-vorwärts jeweil an die oc1a und oc1b pins geklemmt aber was mach ich mit den rückwärts?

    hatte mri jetzt schon was mit xor und and gattern aufgezeichnet aber ich möchte eigentlich wnens geht so auskommen wie es nun ist. gehen müsste es so ja den beim original cybot gehts ja scheinbar auch irgendwie.

    MfG Bammel

Berechtigungen

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