Hallo zusammen, ich könnte im Rahmen eine wissenschaftliche Arbeit, um CAN Nachrichten mit dem AT90CAN128 Mikrocontroller zu senden, eine CAN Bibliothek anpassen und könnte damit Nachrichten zwischen zwei Mikrocontrollern empfangen und senden und das ganze mit Canoe beobachten. Nun will ich in diese Bibliothek eine Code schreiben sodass ich einen DC Motor über CAN Bus Steuern kann. Die Schaltung habe ich gebaut ich weiß aber nicht in welche Stelle meine Code schreibe. Welche Ports und Bits ich benutzen soll? ob ich eine PWM Signal erzeugen muss um den Motor zu starten? Vielen Dank
:
Verschoben durch Admin
Ich habe diese Code im Internet gefunden The in the following program we set up TIMER0 in fast pwm mode and use the generated PWM signals to vary the brightness of a LED. This is the simplest program to get you started with PWM signal generation. We start with minimum brightness and increase it gradually and then again reduce it gradually to zero. This process is repeated as long as the system is powered die Code ist aber für ATmega16 oder ATmega32 geeignet. wie kann ich die Code für mein AT90Can128 Mikrocontroller anpassen? weil vom Prinzip ist genau das was ich mit dem Motor schaffen möchte. #include <avr/io.h> #include <util/delay.h> void InitPWM() { /* TCCR0 - Timer Counter Control Register (TIMER0) ----------------------------------------------- BITS DESCRIPTION NO: NAME DESCRIPTION -------------------------- BIT 7 : FOC0 Force Output Compare [Not used in this example] BIT 6 : WGM00 Wave form generartion mode [SET to 1] BIT 5 : COM01 Compare Output Mode [SET to 1] BIT 4 : COM00 Compare Output Mode [SET to 0] BIT 3 : WGM01 Wave form generation mode [SET to 1] BIT 2 : CS02 Clock Select [SET to 0] BIT 1 : CS01 Clock Select [SET to 0] BIT 0 : CS00 Clock Select [SET to 1] The above settings are for -------------------------- Timer Clock = CPU Clock (No Prescalling) Mode = Fast PWM PWM Output = Non Inverted */ TCCR0|=(1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00); //Set OC0 PIN as output. It is PB3 on ATmega16 ATmega32 DDRB|=(1<<PB3); } /****************************************************************** Sets the duty cycle of output. Arguments --------- duty: Between 0 - 255 0= 0% 255= 100% The Function sets the duty cycle of pwm output generated on OC0 PIN The average voltage on this output pin will be duty Vout= ------ x 5v 255 This can be used to control the brightness of LED or Speed of Motor. *********************************************************************/ void SetPWMOutput(uint8_t duty) { OCR0=duty; } /******************************************************************** Simple Wait Loop *********************************************************************/ void Wait() { _delay_loop_2(3200); } void main() { uint8_t brightness=0; //Initialize PWM Channel 0 InitPWM(); //Do this forever while(1) { //Now Loop with increasing brightness for(brightness=0;brightness<255;brightness++) { //Now Set The Brighness using PWM SetPWMOutput(brightness); //Now Wait For Some Time Wait(); } //Now Loop with decreasing brightness for(brightness=255;brightness>0;brightness--) { //Now Set The Brighness using PWM SetPWMOutput(brightness); //Now Wait For Some Time Wait(); } } }
remi schrieb: > Welche Ports und Bits ich benutzen soll? Die, an denen du den Motor angeschlossen hast. remi schrieb: > ob ich eine PWM > Signal erzeugen muss um den Motor zu starten? Das kommt auf den Motor an, aber laufen wird er wohl einfach so. Willst du allerdings die Drehzahl verstellen, brauchst du eine PWM. Oliver
Eine Bibliothek stellt normalerweise Funktionalität an Schnittstellen bereit, d.h. an ihrem Code selbst wird nichts geändert. Wenn Du eine Nachricht bekommst (wie auch immer Deine Bibliothek Dir das mitteilt), schaltest Du einfach den Pin ein. Wenn Du den Motor nur einschalten musst, brauchst Du kein PWM. Das, was Du da in den Anhang gepackt hast ist ziemlich nutzlos, da kann man nämlich nur rauslesen, dass Du einen Motor an den µC angeschlossen hast. An welchen Pin der geht usw. fehlt. Was soll denn das für eine wissenschaftliche Arbeit sein, bei der das Ziel ist, einen Motor einzuschalten?! Viel Erfolg^^ Michael
Die Arbeit ist die Kommunikation zwischen zwei AT90CAN128 Mikrocontroller über CAN Bus zu realisieren damit werden Nachrichten gesendet und empfangen und das ganze mit Canoe simulieren. Die Arbeit geht dann weiter um quasi die Funktionsnachbildung eines Steuergerät darzustellen. Ich wollte aber was ausprobieren mit der CAN Bibliothek und zwar über CAN Bus erstmals einen DC Motor mit 5V Eingangsspannung zu starten. Mein Mikrocontroller ist an Pin(VCC) und Pin(GND) an dem Motor angeschlossen. Die Frage ist auch welche Pin soll ich noch benutzen. danke
Hallo remi, deine Beiträge hören sich so an, als würde dir schon das grundlegenste Wissen fehlen. Das ist nicht schlimm, man sollte dann aber nicht gleich eine CAN Kommunikation als Einstiegsprojekt auswählen. Arbeite dich durch die verschiedenen Tutorials, und stelle dann gezielte Fragen wenn du was nicht verstehst. z.B. https://www.mikrocontroller.net/articles/Absolute_Beginner dann später https://www.mikrocontroller.net/articles/CAN_Bibiliothek_f%C3%BCr_AT90CAN_Prozessoren
Ach ja, wenn du keine gespaltene Persönlichkeit bist, dann kannst du dich ja mit deinem Hausaufgabenkollegen zusammentun... Beitrag "C Programcode für Motorsteurung" Ansonsten reicht ein Thread, und du solltest dich mit dir selber auf einen Namen einigen. Oliver
:
Bearbeitet durch User
Es gibt noch zwei weiter mit der Aufgabe : Beitrag "DC motor mit 5V Eingangsspannung" Beitrag "Elektronik Bauteile um Motor zu starten mit AT90CAN" Und da läuft CAN schon. Gruß JackFrost
Ach, ist das lästig..... Würde mich interessieren für welche "wissenschaftliche" Arbeit das gebraucht wird. Naja, dann macht er wahrscheinlich morgen einen neuen Thread auf...
Drei Neuankömmlinge wollten einer altem Omi vorm Kauflang lauthals um sie herum wuselnd davon in Kenntnis setzen, das ihr Licht am Rad nicht ginge. Dazu stellten Sie das Rad hinten auf und ein anderer trat kräftig in die Pedale. Als ich schnellen Schrittes hinzu kam und das Wort "Nabendynamo" erwähnte, rannten alle, als ginge es um ihr Leben, offenbar konnte sie mit dem Wort nichts anfangen oder es trägt in ihrer Landessprache vertreibenden Charakter ... Und ja, die alte Dame hatte ihr Portemonaise noch. Das Rad kurz vorn angehoben und angetrieselt - Licht ging NATÜRLICH. -Fachkräfte- Axelr. DG1RTO