Anzeige:

Motorsteuerung mit ATmega168

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Motorsteuerung mit ATmega168

Von egma93 am 03.04.2012 10:51

Hey Leute,

Hab gerade eine Schaltung für die Ansteuerung von 2 Motoren gefunden, jedoch wollte ich euch fragen ob sich jemand mit dem MegaPack und dem ATmega168 / 8 auskennt und mir sagen kann wie ich diese Schaltung an mein MegaPack anschließe. Sollte die Schaltung nicht korrekt oder brauchbar sein, schlagt mir eine bessere vor.

Die Schaltung:
http://i41.tinypic.com/34rdc2t.png

Bestückungsplan für das MegaPack:
http://i41.tinypic.com/34qn69x.png

Schaltplan für das MegaPack:
http://i43.tinypic.com/33wb7er.png

Schaltplan für den ATmega 168 / 8:
http://i39.tinypic.com/z4bx0.png

Noch eine weitere Frage: Die Ansteuerung dieser Motoren erfolgt über eine PWM. Da wollte ich euch fragen ob mir da jemand helfen könnte da ich mich mit er PWM-Ansteuerung von Motoren nicht wirklich auskenne. Wenn ihr mir ein Programm schreibt oder so, dann bitte als C-Code.

Vielen danke für eure Hilfe im Voraus.

mfg

Von BellaD am 03.04.2012 12:03

Zitat:
Wenn ihr mir ein Programm schreibt oder so, dann bitte als C-Code.



Nutzerorientiert ausgedrückt präsentiert die dysfunktionale Weiterentwicklung der Personifizierung eine Initiative der hypokratisch kalkulativen Kritik und kompensiert erstaunlicherweise einen ambivalent betriebsinternen Randbezirk nach der Polarisierung der Zukunftsprognose.

1. man nehme sich das Datenblatt des Atmega 168
2. man überlege sich welche Ports man benutzen möchte
3. man kommt dann darauf das man pro motor 2 Portpins für die Richtungssteuerung benötigt
4. man brauch noch einen oder besser zwei ausgänge der /des Timers der die Pwm bereitstellt.
5. man schreibt sich ein Prg. in beliebiger Sprache das diese Anforderungen erfüllt.

Da du keinerlei weitere Hinweise gegeben hast wie zBsp.
was für Motoren
welchen Strom
welche Spannung
welcher Drehzahlbereich soll benutzt werden
willst du nur einstellen oder auch regeln
usw. usw.

kann ich leider keine erschöpfende Auskunft erteilen da meine Glaskugel mal wieder bei der guten Fee zur Auffrischung ihrer ach so magischen Kräfte unterwegs ist.

mfg

zum üben würde ich mal mit einer PWM gesteuerten LED anfangen..

http://www.loetstelle.net/forum/viewtopic.php?p=12237#12237

Von egma93 am 03.04.2012 21:15

nja, die Spannung des verwendeten MegaPacks ist 5V aufwärts und der Motor braucht 3V. der Strom sollte nicht zu hoch sein da es nur ein kleiner Motor ist welcher bei zu hohem Strom durchbrennen würde. der Drehzahlbereich ist eigentlich egal, es soll ein kleiner fahrbarer Roboter betrieben werden. Die Drehzal soll nur eingestellt werden, wäre aber nett wenn man sie regeln könnte.

sind das genug infos??

mfg

Von BellaD am 03.04.2012 21:29

moin

da würde ich dann lieber ein Motortreiber Ic nehmen
zBsp. den L293D da ist schon alles fertig drinn für 2 Motore
und mir nicht erst ne diskrete H-Brücke zusammenbasteln.

http://www.ti.com/lit/ds/symlink/l293.pdf

mfg

Von egma93 am 04.04.2012 08:26

Die H-Brücke hab ich e schon, Wie man sie Anschliest weiß ich auch

http://www.google.at/imgres?q=h+br%C3%BCcke&um=1&hl=de&sa=N&biw=1467&bih=681&tbm=isch&tbnid=32nQhLFNCYq2KM:&imgrefurl=http://www.roboternetz.de/community/threads/46209-Anschlussbelegung-Joystick-Apem-Serie-851/page2&docid=iI53Fr0HZAcnmM&imgurl=http://www.bilder-hochladen.net/files/917o-p.jpg&w=268&h=226&ei=J-h7T6LjIMeDOvOPgbcM&zoom=1&iact=hc&vpx=1017&vpy=371&dur=1330&hovh=180&hovw=214&tx=143&ty=111&sig=115737179764703882656&page=2&tbnh=150&tbnw=178&start=18&ndsp=24&ved=1t:429,r:16,s:18,i:143

Die Anschlüsse Direction+, Direction- und PWM werden für den ersten Motor am Port B angeschlossen, d.h. Direction+ auf PB0, Direction- PB1 und PWM PB2. Dasselbe mache ich für den zweiten Motor mit den Ports PB3-PB5.

Dennoch fehlt mir noch das C-Programm

mfg[/url]

Von BellaD am 04.04.2012 15:29

moin

Da hilft nur selber schreiben Wink

als Hilfe mal ne 3 Kanal PWM mit nem ATmega8

Code:


/* 3x PWM auf Atmega8-PDIP mit 8MHz internem Takt
 
   1 x LED (rot)  an PB1 für (OCR1A)
   1 x LED (grün) an PB2 für (OCR1B)
   1 x LED (blau) an PB3 für (OCR2)

   Compiliert mit AVR Studio 4.14 und AVR-GCC
*/
 

#define RAND_MAX 0xFF
#define F_CPU 8000000UL

#include <stdlib.h>
#include <avr/io.h>       
#include <util/delay.h>

uint8_t mux, result_ADC;
uint16_t rt, gn, bl, rt_neu, gn_neu, bl_neu, result_tmp, t, g;

void init_Device (void)
{
   DDRB  =0b00001110;           //PB1, PB2, PB3 als Ausgang (PWM OCRxx)
   PORTB =0b11001110;           //PullUp-Widerstand an PB1, PB2, PB3, PB6, PB7 ein
// PB6 PB7 Eingang Schalter
     PORTC =0b00000000;
   DDRC  =0b00000000;

   DDRD  =0b00000000;
   PORTD =0b11111111;

     TCCR0 =0b00000001;         //Einstellung der Timer für 3 Kanal - 8Bit-PWM
   TCCR1A=0b11110001;
     TCCR1B=0b00000001;
     TCCR2 =0b01110001;
}

void long_delay(uint16_t ms)
{
   for (; ms>0; ms--)
   {
      _delay_ms(1);
   }
}

void Farbe_Hart (void)
{
   OCR1AL = rt_neu;                // wo du die Werte herbekommst ist deine Sache
   OCR1BL = gn_neu;
   OCR2   = bl_neu;
}

int main (void)
{
   init_Device();
   //Modi:                              //Timer und Ports initialisieren

   for (; ; )
   {
   
   //   HART:
      
      Farbe_Hart();
   
            long_delay (1);
   }


   return(0);
}


Von egma93 am 04.04.2012 21:11

danke dir Very Happy

mfg

Anzeige: