Hi Leute Da digitale Funken (zum steuern von rc cars) recht teuer sind, dacht ich mir - mach ich selbst! Jetzt hab ich eine alte funke bei ebay bestellt, den analogkram rausgeschmissen und nurnoch die potis drin gelassen Ich möchte mit dem ADC meines pic16f877a die spannung an den potis ablesen, um damit die Knüppelstellung ermitteln zu können, allerdings schwanken die werte des ADC verdammt stark: 2,316 V 2,402 V 2,379 V 2,346 V 2,468 V laut multimeter sinds 2.31V Die Schaltung sieht so aus: LF 33 CV (3.3v festspannungsregler) -> microchip | | | ADC | | 1k ----------------------------- poti (2k-3k) ---- | GND | | ------| |----------- 100nF quellcode mit CCS C: setup_adc_ports( ALL_ANALOG ); setup_adc(ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); delay_us(20); value = read_adc(); sitzte jetzt schon 3 std dran, aber die schwankungen werden nicht weniger ... hat wer ne idee?
>delay_us(20);
Da scheinst du ganz schön zittrige Hände zu haben.
Wie wäre es mit:
- eine kleinen C parallel zur Ref-Spannng?
- ein kleines Mittelwert/Tiefpassfilter in der Software?
- langsamere Abtastung? oder brauchst du 50'000 Samples pro Sekunde?
schonmal danke für die antwort :D hier nochmal der ganze QT setup_adc_ports( ALL_ANALOG ); setup_adc(ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); delay_us(20); // warten bis adc bereit value = read_adc(); // 4 mal lesen value += read_adc(); value += read_adc(); value+= read_adc(); value/=4; value=(value*33)/10; printf("%Ld \n\r", value); delay_ms(500); Als Vref nutz ich VDD vom PIC, die sollte ja eigentlich durch den festspannungsregler recht stabil sein ?
>recht stabil sein
poste mal die komplette Schaltung, mit allen Bauteilen (Block-Cs)
Durchdem daß du vcc als VREF nimmst, glättest du die automatisch mit dem Kondensator des uC, das dir dann warscheinlich die wechselnden Werte verursacht. Versuch es mal, Vref extern zu beschalten.
Da kann ja nichts glätten. An JEDES Betriebsspannungs-Masse-Pin-Paar gehört ein 100nF Kondensator. Direkt an den µC
Matthias Lipinsky wrote: > Da kann ja nichts glätten. An JEDES Betriebsspannungs-Masse-Pin-Paar > gehört ein 100nF Kondensator. Direkt an den µC eingebaut, Vref extern verschaltet, keine verbesserung :\
5v geregeltes netzteil... hab mal die verschiedenen spannungen am PIC gemessen: am ADC pin, an dem der poti hängt ist die spannung konstant 2.31V an den nicht angeschlossenen ADC pins schwankt die spannung: 0.17V-0.20V am VDD pin vom PIC ist die spannung auch konstant 3.30V
>konstant 3.30V
Hast du das mit einem Multimeter oder einem Oszi gemessen?
Ein Multimeter ist für solche Betrachtungen nämlich ungeeignet...
hmm .. bischen komisch mit dem QT: setup_adc_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); delay_us(20); value=0; for(i=0;i<64;i++) { value += read_adc(); } value/=64; setup_adc( ADC_OFF ); value=((value*33)/10)>>2; value*=4; printf("%Ld \n\r", value); delay_ms(500); (64 messungen und letzten 2 bits weggeschmissen) gibts einigermaßen gute werte... 2,372 V 2,384 V 2,372 V 2,376 V aber da muss doch mehr gehen ><
Kein Oszi, und da nimmst Du Dir so ein Projekt vor? Abgesehen davon, das Ganze ist sowieso akademisch, da Du die "Funke" - sollte sie irgendwann funktionieren - ohnehin nie in Betrieb nehmen darfst.
wieso willst du für ein ferngesteuertes Auto das Poti genauer 10mV auslesen, brauchts das so genau ?
vielleicht liegts auch einfach daran, dass du den PIC ausserhalb der spezifikation betreibst: PIC16F877 braucht 5.0V PIC16LF877 kannst du mit weniger betreiben (glaub so bis 2V) ps: digitale "Funke" (ich nehme an, damit meinst du fernsteuerungen), senden das signal für die servos eben digital und nicht analog. was du das machen willst - soweit ich verstanden habe - ist die poti-stellung mit dem PIC auslesen und dann wie versenden? der empfänger müsste dann auch ein digitaler empfänger sein, oder hat dein auto noch einen analogen?
soo .. stimmt schon, die 10mv genauigkeit reichen eigentlich vollkommen. nachdem ich heute morgen den vorwiderstand etwas modifiziert hatte war der spannungsunterschied zwischen min und max stellung größer ausgefallen als erwartet ich werfe jetzt die letzten 3 bits weg und komm damit auf eine genauigkeit von 100 LSB von min zu max, wenn sich ne fliege auf den knüppel setzt zeigt er 1 an O.O xD zum funken werde ich die zigbit amp 2.4 ghz von meshnetics benutzen die vor mir liegen 8) - die haben mit 10mW ausreichende reichweite später kommt noch ein S65 lcd dran und das ding ist besser als die meisten gekauften xD
was ähnliches hab ich meiner funke spendiert, allerdings nur ein RFM12B868 für einen rückkanal vom modell :) solange man den HF-teil fertig nimmt seh ich kein problem beim betrieb
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.