Hi Jungs
erstmal wünsche ich euch alle ein frohes neues Jahr
zu meinem Problem, ich versuche über den ersten analog- digital
wandlerkanal eine Spannung umwandlen, soweit so gut.wenn ich versuche
nun die spannung an der Excel Tabelle weiterzugeben klappt das
überhaupt nicht. Das Programm habe ich schon auf mein Atmega88
gespeichert die rx232 schnittstelle ist mit PD0:1 auf dem Stk500
verbunden. nun wenn ich die excel tabelle starte kommt entweder die
Fehlermeldung " die Methode PortOpen für das Objekt 'IMDComm' ist
fehlgeschlagen. Oder die Meldung "die Methode input für das Objekt
'IMDComm'ist fehlgeschlagen "
wenn ich versuche die beiden Meldungen zu überspringen in visualbasic,
kriege ich am ende 2 euro zeichen als Wert :-)
ich wäre euch sehr sehr dankbar, wenn ihr mir hilft, denn allein komm
ich wirklich nicht weiter.
PS: C-code und Excel-Tabelle als Anhang
Danke im Voraus
Hi
Du hast ein "return(result);" am ende deiner Wandelfunktion vergessen.
Was mit der Excel-Tabelle nicht stimmt, kann ich so nicht sagen.
Dann Teste das ganze mal mit einem Terminalprogramm wie zum Beispiel
Hyperterminal, minicom...
Und bitte hier über Erfolg/Mißerfolg berichten.
mfg mf
Anfänger schrieb:> nun wenn ich die excel tabelle starte kommt entweder die> Fehlermeldung " die Methode PortOpen für das Objekt 'IMDComm' ist> fehlgeschlagen. Oder die Meldung "die Methode input für das Objekt> 'IMDComm'ist fehlgeschlagen "
stammt die Tabelle von Dir?
evl. fehlen bei dir die benötigten ActivX Bibliotheken für die
COM-Funktionen, wenn ich die Tabelle öffne siehts so wie im Anhang aus.
Sascha
Hallo Jungs
sorry dass ich erst heute zurückschreibe, eine Erkältung hat mich
erwischt.
ich habe es nun hingekrigt mit dem Hyperterminal die werte zu lesen. als
nächster Schritt möchte ich gerne ein Spannungswert an den Hyperterminal
übergeben . Die Umrechnnungen, die im Tutorail stehen, habe ich
übernommen, nund kriege ich kommische werte villeicht kann jemand mich
erlösen, denn ich find leider kein Fehler. am Eingang habe ich 1v
Spannung eingestellt, nun möchte ich am Rs232 ungefähr 1 V lesen
Anhang. Main.c und Übertragberischt
Danke im voraus
Ein C Buch wäre nicht schlecht
Das hier
test=adc0*(4,8828125 );
ist nicht die Zahl 4 Komma 8828125.
Gleitkommazahlen werden in Programmiersprachen praktisch immer wie im
englischen Sprachgebrauch geschrieben. Mit einem Punkt und nicht mit
einem Komma
test = adc0 * 4.8828125;
Lediglich Excel ist da eine (besch...) Ausnahme. Im deutschen Excel muss
man ein Komma benutzen. Das hat schon für so manche Probleme gesorgt.
Hi
du hat recht, ich wiess zwar dass man in C kein Komma sondern Punkt
schreibt. habe leider dafor mit dem Formel in Excel rumgespielt und beim
kopieren einfügen nicht darauf geachtet, hut ab :-)
so nun die nächste Frage, ich möchte gerne soweit wie möcglich den
Messfehler minimieren, gibts dafür irgendwelche Vorschläge!!!
ich messe folgenden
bei 3v messe ich 2.856/2851
bei 1 v messe ich 1.899 0.947
Anfänger schrieb:> so nun die nächste Frage, ich möchte gerne soweit wie möcglich den> Messfehler minimieren, gibts dafür irgendwelche Vorschläge!!!
Du benutzt die interne Referenz
ADMUX = (1<<REFS1) | (1<<REFS0);
Die hat aber
* weder exakt 2.56 Volt, sondern müsste ausgemessen werden
(die interne Referenz ist hauptsächlich eines: stabil.
d.h. sie verändert sich nicht.
Das heißt aber nicht, dass sie exakt 2.56V beträgt. Sie kann
auch 2.3V oder irgendwas anderes in diesem Bereich sein,
solange sie nur eines tut: sich nicht verändern und stabil sein)
* noch hat sie 5V.
Du rechnest aber offenbar mit 5V als Referenzspannung, denn
5 / 1024 macht 0.00488.....
und du hast ja offensichtlich das tausendfache davon genommen
Deine 'Messfehler' sind also in Wirklichkeit deine eigenen
Programmierfehler :-)
Hi Kart
ich benutzte ein STK500 mit einem Atmega88.an Aref messe ich eine
Spannungg von 5.041 V. Ist es nun richtig oder falsch. der AREF jumper
auf dem STK500 ist angesteckt.
besten Dank Karl
Anfänger schrieb:> Hi Kart> ich benutzte ein STK500 mit einem Atmega88.an Aref messe ich eine> Spannungg von 5.041 V. Ist es nun richtig oder falsch.
Du schaltest REF0 und REF1 auf 1
Schau in dein Datenblatt zum Mega88
Was steht im Datenblatt, was das für den Mega88 bedeutet?
Tschuldigung.
Ich hab selber im Datenblatt für den Mega16 nachgesehen, weil ich keines
für den Mega88 da habe.
Hab ich jetzt nachgeholt.
REF0 und REF1 jewils auf 1, bedeutet 1.1V Referenz und nicht 2.56V wie
ich weiter oben schrieb. Aber bis auf den anderen Zahlenwert bleibt
alles andere gleich.
Und erlös bitte deinen Mega88.
Der versucht krampfhaft mit seiner internen Quelle die 1.1V als Referenz
einzustellen und du bläst ihm da von aussen 5V auf die Schaltung.
Irgendwann wird da einer nachgeben und kaputtgehen. Und das wird nicht
deine 5V Versorgung sein.
hi Karl
Ich habe es geändert und nehme jetzt die externe Refernzspannung, leider
bin ich immer noch bei einm Fehler von ungefähr 1%, an Aref messe ich
eine spannung von 5,049 V. Und für meinen Projekt ist die
Messgenauigkelt sehr wichtig.
die externe Refernzspannung habe ich so deklariert:
ADMUX &=~ ((1<<REFS1) | (1<<REFS0)); Richtig???????????????
Vielleicht hat jemand ein Idee wie man das besser hin kriegt
Danke im Voraus
Anfänger schrieb:> ADMUX &=~ ((1<<REFS1) | (1<<REFS0)); Richtig???????????????
Ja.
Anfänger schrieb:> leider> bin ich immer noch bei einm Fehler von ungefähr 1%
Im Datenblatt sind 2 LSB als absoluter Fehler angegeben, sollte etwa 0,2
% entsprechen.
Die Frage ist, ob Du einen konstanten Fehler von 1 % hast oder die Werte
im Bereich 1 % drüber oder drunter liegen, also schwanken. Also einfach
mal z.B. 1.000 Wandlungen am Stück und mit den Ergebnissen etwas
Statistik machen.
Bei konstantem Fehler Korrekturwert machen (wobei sich natürlich die
Frage der Genauigkeit Deines Meßmittels stellt ...), bei Streuung
Meßsignal und Referenz besser blocken. Aber zu diesen Themen gibt es
ganz viele Infos in der Suche.