Moin,
ich bin ein ziemlicher Neuling, deswegen seit mir bitte nicht böse, dass
die eine oder andere Frage bzw. Aussage für euch etwas blöd erscheinen
mag:
Ich möchte mit meinem AT90CAN128 ein CAN Signal empfangen
(Tachogeschwindigkeit), in eine bestimmte Frequenz umrechnen (der
Geschwindigkeit entsprechend,simple Berechnung) und über eine
Sinusspannung zwei Magnete ansteuern. CAN-Bus und Berechnung klappen
super, nur jetzt was die "Ausgabe" angeht hänge ich ein wenig:
Ich habe nach meiner Recherche zwei (oder vll auch nur eine?)
Möglichkeiten gefunden: via PWM oder den DA Wandler des AT90 benutzen.
Von PWM habe ich leider sehr sehr wenig Ahnung, deshalb wollte ich es
über den DAC probieren:
Idee ist, dass dieser mit einer Sinustabelle gefüttert wird (Werte von
0V bis 5V, sinusförmig natürlich,Tabelle besteht derzeit aus 16 Werten)
und diese dann mittels einer FOR-Schleife nacheinander ab"gefahren"
werden.
Über die Zeit, wie lange ein Wert gehalten wird, lässt sich die Frequenz
(die berechnet wurde,benötigter Frequenzbereich: 30 Hz- 750 Hz)
einstellen.
Meine Fragen sind nun:
1) Was haltet ihr von diesem Ansatz?
2)Wie würde denn genau die Zeile lauten, um einen solchen Sinuswert an
den DAC zu senden? z.B. an PF1
3) Habe mich bereits im programmiern des DAC versucht und euch den
Code-Ausschnitt mal angehängt, vll sticht jemandem der Fehler (ich glaub
eher dass es mehrere sind) ins Auge:
1 | void DAC_init()
|
2 | {
|
3 | ADCSRA |= (1 << ADEN)| (1 << ADATE);//DAC aktivieren
|
4 | ADMUX |= (1 << MUX4:0);//MUX4-0 auf 1 setzen
|
5 | DIDR0=0xff;
|
6 | DDRF =0xff; //PF als Ausgang
|
7 | };
|
8 |
|
9 | void ausgabe_magnet (int f)
|
10 | {
|
11 | int x;
|
12 | for(x=0;x<16;x++)
|
13 | {
|
14 | ???=sinus_tabelle[i]; //nächsten Wert aus Sinustabelle holen
|
15 | _delay_ms(Wartewert);
|
16 | }
|
17 | };
|
PS: Schutzschaltung für den Ausgang des AT (gegen ein Aufschwingen der
Magnete) und die nötige Stromversorgung der Magnete habe ich mich schon
gekümmert.
Sollte ich etwas vergessen haben, bitte ich um Nachsicht.
Vielen Dank schon mal im Vorraus!
MFG HC89MUC