Hallo Pepsi-Fan Max,
![Zitat](images/misc/quote_icon.png)
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](images/misc/quote_icon.png)
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](images/misc/quote_icon.png)
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](images/misc/quote_icon.png)
Zitat von
PCF8574P
... Muss eigentlich der Reset-Pin vom
AVR mit 10k auf VCC? ...
Ja - so wie hier.
Lesezeichen