Hallo Pepsi-Fan Max,
Zitat von
PCF8574P
... gut gelungen ... hast du den originalmotor benutzt, oder? ...
Danke für den Beifall. Richtig, es ist der originale Motor - hat ein ausreichendes Drehmoment, ist sauber und vollständig montiert und läuft bei vollem Tempo relativ schnell. Ich hatte ca. 1,5 m/s gemessen.
KlingonenMotoren? Ich vermute, Du meinst die kleinen Motörchen mit den Encoderscheiben von Klingon77. Davon kommen zwei in die 0,15er Coladose. Braucht noch ne Weile.
Zitat von
PCF8574P
... Könntest du mir mal bitte den Code für den L293D schicken??? ...
Kein Problem: Du weißt aber, dass ich das in C (bei mir eher Cäh) mache - und dass ich darin nicht so gut bin. Aber hier ist er:
Code:
/* >>
Auszug aus ...\WR3_mot_x30.c ###>>> Variablendeklarationen z.T. nicht hier
===================================================================================
Target MCU : ATmega168
Target Hardware : FLEX168 bzw WR168
Target cpu-frequ. : In der Quelle wählbar
===================================================================================
Enthaltene Routinen: Auszug aus Motorroutinen
......
void TC0PWM_init(void) // Init Timer/Counter0 für Erzeugung PWM-Signal
......
void Mot_on_v( void ) // Motor14 vorwärts init., motspeed=0
void Mot_v( uint8_t mspeed ) // Motor setze Speed vorwärts o. rückwörts
void setMot14(uint8_t speed) // Geschwindigkeit Motor über beide L293D-Ausgänge
void M14an (void) // Motor 14 - PWM auf Pin PD5/OC0B einschalten
void M14mDp(void) // Motor 12+34 dreht im math. Drehsinn positiv
void M14mDn(void) // Motor 12+34 dreht im math. Drehsinn negativ
// = im Uhrzeigersinn drehen (Vorwärtsfahrt)
void M14aus(void) //Motor aus
===================================================================================
*** Versionsgeschichte:
====================
x30 08Dez08 22ff Projekt wieder aufgenommen aus "altem" x14, Motortest ohne Sensor
............
x00 28nov08 1303 Übernommen von ... \WR-2_mot_x10.c
===================================================================================
*** Aufgabenstellung : Motorsteuerung ....... mit L293D - Motoransteuerung über
beide L293D-Ausgaben auf einen Motor (Stromstärke!)
Original: ......\WR-2_mot_x10.c 25nov08 19ff
================================================================================ */
/* ============================================================================== */
/* == PWM-Routinen zur Motoransteuerung ======================================= */
void TC0PWM_init(void) //Init Timer/Counter0 für Erzeugung des PWM-Signals
{
TCCR0A |= (1<<COM0A1)|(1<<COM0B1); //Clear/set OC0A/OC0B on Compare Match,
// doc S102 , OC0A/OC0B ist Port PD6/D5
TCCR0A |= (1<<WGM01)|(1<<WGM00); // Fast PWM, TOP=0xFF=dez255, doc S104
// das ergibt aus 20 MHz mit Prescaler 1/64 1220 Hz
TCCR0B |= (1<<CS01)|(1<<CS00); // Prescaler ist clk/64 doc S106
OCR0A = 0; // PWM auf Null setzen
OCR0B = 0; // PWM auf Null setzen
Iz_diff0 = 0;
iesum12 = 0;
ie_mot12 = 0;
}
/* ============================================================================== */
void setMot14 (uint8_t speed) //Geschwindigkeit linker Motor = Mot 34
{OCR0B = speed;} // PWM auf PD5
/* ============================================================================== */
// =================================================================================
/*### Motor einschalten für Fahrtrichtung vorwärts.
=============================================================================== */
void Mot_on_v( void ) // Motor14 auf vorwärts initialisieren, motspeed=0
{
M14mDp(); // Setze math Drehricht pos = Vorwärtsfahrt
// ==================
M14an (); // Motor PWM auf PinD5 OC0B enable
setMot14(0); // Setze Motorfahrt auf Null
return;
}
/* ============================================================================== */
/* ============================================================================== */
// =================================================================================
/*### Motorgeschwindigkeit setzten. Richtung etc muss bekannt sein
=============================================================================== */
void Mot_v( uint8_t mspeed ) // Motor setze Speed vorwärts o. rückwörts
{
//uint8_t mspeed; // Motorspeed als PWM-Wert
setMot14(mspeed); // Setze Motorfahrt auf mspeed
return;
}
/* ============================================================================== */
/* ============================================================================== */
/* ============================================================================== */
/* Motoransteuerung mit dem L293D, hier werden die Drehrichtungen gesetzt ==========
Vorgesehene/belegte Anschlüsse am ATMega168 :
================== R4RS
........................
+++ VCC 7 22 GND ---
--- GND 8 21 AREF ref
XTAL1 PB6___9 20___VCC +++
XTAL2 PB7 10 19 PB5
(E6) PWM M14 uz+Guz,PD5 11 18 PB4
PD6__12 17___PB3, Reserve 2
(E8) _|-- M14 mDp,PD7 13 16 PB2, Servo
(E9) _|-- M14 mDn,PB0 14 15 PB1, OC1A = SFH 415, OUT (irDME)
Motorbelegung: Anschlüsse von M34 gehen auf beide L293D-Kanäle */
/* ============================================================================== */
void M14an (void) // Motor 14 - PWM auf Pin PD5/OC0B einschalten
{ TCCR0A |= (1<<COM0B1); // ENable set OC0B on Compare Match
}
/* ============================================================================== */
// Drehrichtungsbefehle für Motor 14 = Einziger Motor
void M14mDn (void) // Motor 34 dreht Uhrzeigersinn = math negativ Drehsinn
{PORTB |= (1<<PB0); PORTD &= ~(1<<PD7);}
/* ============================================================================== */
void M14mDp (void) // Motor 14 dreht im math Drehsinn positiv
{PORTB &= ~(1<<PB0); PORTD |= (1<<PD7);}
/* ============================================================================== */
void M14aus (void) // Motor 14 aus
{
PORTB &= ~(1<<PB0); PORTD &= ~(1<<PD7); // Motor-enable ausschalten
//TCCR0A |= (1<<COM0B1); // ENable set OC0B on Compare Match
TCCR0A &= ~(1<<COM0B1); // PWM-aus = Disable set OC0B on Compare Match
}
/* ============================================================================== */
/* ============================================================================== */
/* ===== ENDE Subroutinen ================================================== */
/* ============================================================================== */
Zitat von
PCF8574P
... Vorsclag ist die Leds als Scheinwerfer zu montieren. Mann muss sie nur richtig ausrichten ...
Danke für den Vorschlag. Leider geht das nicht - hinter den Scheinwerfern ist Struktur des Gehäuses, die ich nicht entfernen möchte. Ausserdem - hinter die Scheinwerfer sollten allenfalls - weiße LED´s - oder? Aber so weit bin ich (noch) nicht. Ich würde im Notfall die hübsch glänzende Kühleröffung opfern - aber mal sehen - es gibt noch andere Möglichkeiten.
Zitat von
PCF8574P
... Muss eigentlich der Reset-Pin vom
AVR mit 10k auf VCC? ...
Ja - so wie hier.
Lesezeichen