PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Getriebemotor über analogen Ausgang steuern



Animus94
14.02.2012, 16:12
Hallo,

hab mir vor einiger Zeit das "C-Control C-Control Projectboard PRO 128" und den passenden c-Controller besorgt.
Nachdem ich jetzt einige Zeit mit dem Programm c-basic experimentiert habe und auch schon mehrere Transistor Schaltungen angesteuert habe, möchte ich nun
einmal ein einfaches Antriebs-System aufbauen.
Im Prinzip soll es darum gehen einen Motor in seiner Lauf/Drehrichtung und in seiner Geschwindigkeit zusteuern.
Dazu hab ich folgende einfache Schaltung gefunden
http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung
(bei Punkt 2 "Ansteuerung mit Relais und MOS-FET")
Meine Frage ist jetzt wie Funktioniert das jetzt mit der Ansteuerung des N-Kanal MOS-FETs ? Um hier die Geschwindigkeit zu verändern muss ich die Spannung an der Basis verändern,
das heißt ich brauche einen Analogen Ausgang, diese sind an meinem Mico-Controller ja vorhanden...
Aber kann ich jetzt den Mos-Fet einfach an einen PWM-Ausgang anklemmen, oder brauch ich da noch ein Tiefpass bzw. irgendwelche andere Hardware?
Und wie sieht es mit der Software aus? Ich hab leider keine Ahnung wie das Programm aussehen muss um das richtige Analoge Signal auszugeben...
Wäre toll wenn mir hier jemand helfen könnte.
Bis jetzt weiß ich nur, dass das analoge Signal von der Frequenz abhängt mit der ich den PWM-ausgang an/aus schalte. Aber verstehe nicht wie ich den Motor später allein durch das angeben
einer Zahl im 8.Bit bereich regeln soll

Danke im voraus ^^

PicNick
14.02.2012, 18:23
Für den Betrieb in beiden Richtungen brauchst du eine H-Schaltung. Nimm doch einen Treiber IC, z.B.

http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung#Ansteuerung_mit_Treibe r_IC_L293_D

Lies auch mal da

http://www.rn-wissen.de/index.php/Pulsweitenmodulation

oberallgeier
14.02.2012, 18:49
... das heißt ich brauche einen Analogen Ausgang, diese sind an meinem Mico-Controller ja vorhanden ...Hmmm, klasse - ein Mikrocontroller mit analogem Ausgang. Was ist das für ein Typ ? Wär sicher interessant - so etwas wünschte ich mir schon gelegentlich.

Geistesblitz
14.02.2012, 20:07
Wär halt interessant zu wissen, ob es nun wirklich ein analoger Ausgang oder einfach ein PWM-Ausgang ist. Der TE schreibt ja von beidem, ich denk aber mal eher er meint PWM.

PicNick
15.02.2012, 08:08
Männer ! Christkind war schon und Ostern kommt erst !

Einen µC mit eingebauten DAC mag's ja irgendwo geben, wär aber sehr aussergewöhnlich.

Unregistriert
15.02.2012, 08:08
Hi leute ,
animus1 meinte ja er hätte zuhause das "C-Control C-Control Projectboard PRO 128", auf diese board passt nur ein µC und zwar die C-Control PRO Unit
http://www.conrad.de/ce/de/product/198219/C-CONTROL-PRO-UNIT-MEGA-128/SHOP_AREA_17348&promotionareaSearchDetail=005

Diese bestitzt 6-PWM Ausgäge, animus1 möchte also sicherlich wissen welche hardware nöig ist um aus einem pwm eine analoge spannung zu generieren.
Auserdem will er verstehen wie man soetwas in c-basic umsetzt

Animus94
15.02.2012, 10:23
Hi,
der Typ vom Gast-beitrag hat recht, als µC hab ich die C-Control PRO Unit. Diese hat 6 PWM -Ausgänge...
Meine Frage ist jetzt wie muss ich den Tief-Pass anlegen (Werte für Widerstand u. Kondensator)?
und wie muss das Programm dazu ausehen? also wie z.B. sag ich dem PWM-Ausgang, das er bei einem wert zwischen 0-255 genau die Ein- und Ausschaltzeit haben soll.

PS: Danke für die Idee mit dem Motortreiber
http://www.rn-wissen.de/index.php/Ge...iber_IC_L293_D
Dazu auch noch eine Frage: Muss ich zwischen die Eingänge des IC´s und den µC noch jeweils einen Transistor schalten oder passt das vom Strom her?

Geistesblitz
15.02.2012, 10:33
Da brauchst du eigentlich keinen weiteren Transistor zu, das sollte eigentlich passen.
Ich frag mich aber, was du mit einem Tiefpass erreichen willst. Der Vorteil bei PWM ist ja, dass dadurch, dass in einem ziemlich genau bestimmbaren Verhältnis voll durchgeschaltet oder gesperrt wird auch die Linearität weitestgehend erhalten bleibt. Das erkauft man zwar mit hochfrequenten Schwingungen, die aber oftmals nicht so wichtig sind. Wenn das Signal vor dem Motortreiber jedoch gefiltert wird, sodass quasi eine Analogspannung anliegt, ist die Linearität von Motorspannung und Steuerspannung nicht mehr gegeben, da das dann von der Kennlinie der Transistoren im Treiber abhängt.

Animus94
15.02.2012, 11:07
Ah ok, also kommen die PWM Ausgänge direkt an den Motortreiber IC .
Wie ist das jetzt mit c-basic, ich meine wenn ich meinem Pin einen Wert zuweiße [0-255], wie definiere ich dann die An-und Ausschaltzeiten des Ausgangs?
Um dann eben diese verschieden hohen Spannungen zu gerieren mit denen ich die Geschwindigleit steuere.
Irgentwie kann ich mir nicht so recht vorstellen wie das ausehen soll...

RoboHolIC
15.02.2012, 12:09
Jeder PWM-Kanal, ob nun 8-, 10 - oder 12-Bit-Auflösung, ist ein Logikmodul, das die Umsetzung einer binären Zahl in ein Pulsbreiten-moduliertes Signal am Pin für dich bewerkstelligt.

Mal ein Beispiel für den Fall von 8 Bit:
Ein spezielles PWM-Register des Controllers wird mit einem Byte beschrieben.
Ein interner 8-Bit-Zähler wird mit einstellbar vorgeteiltem Systemtakt (1:1, 1:4, 1:16 oder ähnlich, das bestimmt die PWM-Frequenz) befeuert. Beim Überlauf setzt der Controller den zugehörigen PWM-Pin auf high; wenn der Zählerstand gleich dem PWM-Register ist, wird dieser Pin wieder auf low geschaltet. Damit wird ein Einschaltverhältnis entsprechend dem binären Datenwort erzeugt

Animus94
16.02.2012, 09:07
hi,
hab mal gesucht wie man eine PWM in c-basic umseltzen kann...
finden tu ich aber nur eine kurze erklärung der Funktionen, die hier für notwendig sind.
http://www.c-control-pro.de/documentation/index.html?pulsweitenmodulation.htm

leider versteh ich immer noch nicht richtig wie man das ganze jetzt umsetzt…
besteht die komplette Steuerung wirklich nur aus einer Zeile? Ist also schon vordefiniert an welchem Port das Signal ankommt?

Hubert.G
16.02.2012, 10:16
Es wird ein Macro Timer_T0PWM() vorhanden sein das alle Einstellungen macht.
Ausgang ist dann Für Timer0 der Pin OC0, oder für Timer1 der Pin OC1A oder OC1B.

Animus94
17.02.2012, 09:01
Hi,
danke für die antworten ich werd am Wochenende mal versuchen das ganze umzusetzen.

Noch ne Frage zu den PWM/Timer-Funktion:
--> void Timer_T1PWMX(word period,word PW0,word PW1,byte PS);

Hier kann ich als Parameter die Periodendauer, Pulsweite Kanal A, Pulsweite Kanal B und Vorteiler (Tabelle prescaler) übergeben
http://www.c-control-pro.de/documentation/index.html?timer_t1pwmx.htm

Die Pulsweite verändere ich jetzt über den Parameter "Pulweite Kanal X", kann ich hier jetzt jeden beliebigen Wert eingeben, je nach dem welchen Vorteiler ich benuzen ?
Also bei prescaler = PS0_256 dann für Pulsweite 0 bis 256 ?
Bin mir nur nicht sicher weil bei Bascom hat man ja noch einen "compare-Wert" der letztendlich bestimmt wo geschalten wird, das gibt es in c-basic scheinbar nicht.

Geistesblitz
17.02.2012, 09:24
Also der Prescaler beeinflusst normalerweise die PWM-Frequenz, die PWM-Kanäle haben bei AVR soweit ich weiß eigentlich immer 8 Bit, kann man also mit Werten von 0 bis 127 füttern. Höhere Auflösungen bekommst du wohl nur durch Software-PWM hin. Die PWM-Frequenz dürfte eigentlich Quarzfrequenz/Prescaler sein, wenn du also einen 16Mhz Quarz hast und einen Prescaler von 256 wird die Frequenz wahrscheinlich bei 60,4 kHz liegen.