Read analog values without an ADC using PIC12F675 microcontroller
Digital electronics and Analog electronics doesn’t mix easily. A Microcontroller can’t get analog values unless an Analog-to-Digital converter is used, however, you may find a little complicated the use of an ADC and it need lots of Input/Output ports.
Some Microcontrollers, like the small 8-pin Microchip PIC 12F675, do have an ADC integrated, but it is expensier than a PIC without ADC. A simple solution is to use a RC circuit to measure the resistance or capacitance.
Basically, a RC circuit is just a capacitor and a resistor. The circuit labeled A shows the most common RC circuit used. I like to use the B circuit, I get better results.
You can replace the resistor and use a thermistor to measure temperature (PTC or NTC), also a photoresistor can be used to measure light. Any kind of resistive sensor can replace the resistor. If you are using a capacitive sensor, just replace the capacitor instead of the resistor.
How it works:
Just connect the RC circuit directly to an I/O pin of the microcontroller. You can use a 33pf capacitor and 1k resistor.
- First, make the I/O pin as OUTPUT.
- Second, make the pin POSITIVE (+) for one milisecond. (Using a PIC at 4mhz, a 255-cycles loop will be enough).
- Third, Make the I/O pin as INPUT and measure how long stays as POSITIVE (+).An good application of this technique is my “One wire keypad”:
The PIC will measure the RC value of the I/O pin. If the time measured is too long, that means; there is no key pressed. Precision resistors and Mylar capacitor is required to get exact values.
You can see my ” Security Keypad ” uses a similar technique.
For more detail: Read analog values without an ADC using PIC12F675 microcontroller
For All Your PCB Need, One-stop PCB Solution Services Appear:
EasyEDA: free PCB design tool, 200,000+ engineers are using
PCBs: 10pcs 2-layer 10x10cm only $8.21, on-time global shipping
Components: save 50% on cost, save on freight if shipped with ordered PCBs
Current Project / Post can also be found using:
- 12f675; adc convert
- adc using pic 12f675
- A/D-Input Range PIC 12F675
- how to get ADC PIC 12F675 ADC values on GPIO1