Al principio busqué este problema y no pude encontrar nada con este específico.
Estoy usando NE555 para generar frecuencias. Estoy usando los cálculos de este sitio web . Estoy usando 10nf como dice. Mi problema es que no puedo generar frecuencias por encima de los 100kHz.
Estoy usando 0.1uF como C, 47ohm para R1 y R2. Según el sitio web, debería dar 102kHz pero NE555 no da eso. Lo medí con un osciloscopio y solo muestra ruido. Busqué [hoja de datos] [3] y descubrí que NE555 debería alcanzar casi 1 mHz.
¿Cuál crees que es mi problema? ¿Cómo puedo solucionarlo y llegar a las señales por encima de 100kHz?
Los valores R recomendados "NE555" de Texas Instruments son 1k ohmios y más, y no se garantiza el funcionamiento de 1 MHz de esa parte. 100kHz es la recomendación. Hoja de datos NE555
Los diseños de variantes más modernas pueden manejar 1 MHz fácilmente, incluida (nuevamente, de Texas Instruments) la hoja de datos TLC555 TLC555 y ESA hoja de datos señala explícitamente la resistencia interna de descarga (alrededor de 20 ohmios), lo que significa que R1 y R2 deberían ser mucho más altos (4k ohmios sería bueno ).
¿Cuál crees que es mi problema?
no todos los 555 son iguales y algunos de ellos no pueden llegar tan alto.
si tiene que ir tan alto, busque una parte que haga eso. Todos conectan el capacitor al pin de salida y usan una resistencia de bajo valor.
hay otras formas, a menudo más sencillas, de llegar hasta allí.
editar: armé una pequeña rutina rápidamente, para demostrar el concepto.
//measure rc time to charge to '1' on RC_READ pin
uint32_t rctmr_get(uint8_t ch_pin) {
uint32_t tmp;
IO_IN(RC_DDR, ch_pin); //discharge. ch_pin idles high/input
IO_OUT(RC_DDR, RC_READ); //discharges the capacitor (RC_READ idles low/output)
while (IO_GET(RC_PORTIN, RC_READ)) continue; //until the capacitor is fully discharged
IO_OUT(RC_PORT, ch_pin); //start to charge through the ch_pin
IO_IN(RC_DDR, RC_READ); //start to charge up the capacitor
tmp = ticks(); //time stamp tmp
while (IO_GET(RC_PORTIN, RC_READ)==0) continue; //wait for READ pin to go high
tmp = ticks() - tmp; //measure the time elapsed
IO_OUT(RC_DDR, RC_READ); //discharge the capacitor
IO_IN(RC_DDR, ch_pin); //start to discharge from the charge pin (idles high / input)
return tmp;
}
En una resistencia de 16Mhz PIC16F1936 @2.5v, 100K, obtuve un conteo de 183xx para un capacitor de 104; los dos últimos dígitos varían un poco.
Con un poco de filtrado, debería obtener resultados más fluidos.
Por lo que tiene un rango de hasta 2^32/18350*0.1u = 24F, y una resolución de 5.5pf. Con diferentes resistencias utilizadas para cargar el condensador, puede ampliar aún más ese rango.
el código es bastante portátil y debería poder ejecutarse en prácticamente cualquier mcu.
Transistor
HVK
harry svensson
Transistor
HVK
glen_geek
Neil_ES
Jim Dearden
HVK
harry svensson