digitalfunke mit PIC und ADC

OP #966915
Lesenswert?

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?
Gast #966924
Lesenswert?

>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?
OP #966928
Lesenswert?

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 ?
Gast #966947
Lesenswert?

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.
OP #967188
Lesenswert?

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 ><
#967960
Lesenswert?

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?
OP #968109
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren