BLUF: ¿Qué hace que ADC2 funcione perfectamente mientras que ADC3 se carga hacia un valor de 328 (1.6V) en ATMEGA328P?
Utilizo un ATMega328P para uno de mis proyectos actuales y tuve un problema con el ADC.
\ $ A_ {VCC} \ $ está conectado como en la hoja de datos con un condensador de 100 nF y un inductor de 10 uH.
MiproyectoleeconfrecuenciaADC2yADC3paracalcularalgunosresultados.Cuandoloprobé,ADC2estabaleyendoelmismovoltajequepodíamedirconunmultímetro.PeroelADC3mostróvaloressemi-aleatorios(almenos,meparecióenesemomento).DespuésdealgunasmedicionesydeactualizaruncódigoqueacabadeenviarlosvaloresdeADC2alaSerieI,descubríqueADC2funcionabaperfectamente.LuegohicelomismoconADC3yloqueparecíanservaloressemi-aleatorioseraenrealidadlacurvadecargadeuncondensador(queporciertoeracompletamenteindependientedelvoltajerealenelpinADC3).
Actualizar
Despuésdequecambiéelinductorestabatrabajando.Despuésdeunpardepruebas,volvióairmal.Mientrastanto,revisétodonuevamente,incluyendolospuntosmencionadosenloscomentarios.
Todonegativo:
- Laconexióndelpinestábien
- hay0VenelPinADC3
- Elinductorestábien
- ellímitede100nFestábien
InclusocambiéelATMEGAysucediólomismootravez,estuvofuncionandoporalgúntiempoyluegosefuemal...
Debajodelosshematics:
Encuantoalcódigo:
voidsetup(){analogReference(DEFAULT);Serial.begin(9600);}voidloop(){Serial.println(analogRead(A3));delay(100);}
Estodacomoresultadoquesegraficenlossiguientesdatos:
voidsetup(){analogReference(DEFAULT);Serial.begin(9600);}voidloop(){for(uint8_ti=0;i<50;i++){Serial.println(analogRead(A2));delay(100);}for(uint8_ti=0;i<50;i++){Serial.println(analogRead(A3));delay(100);}}
Estodacomoresultadoquesegraficenlossiguientesdatos:
De cualquier manera, el resultado de ADC2 corre hacia un valor de 328 (es igual a 1.6V), que no puedo medir en ningún lugar de mi circuito ...
Actualizar Cambié ahora todas las partes dos veces. El inductor, tanto el condensador como el ATMEGA. De vez en cuando está funcionando, de vez en cuando no.