|
|
View previous topic :: View next topic |
Author |
Message |
GiG
Joined: 03 Sep 2021 Posts: 39
|
Smoke sensor operation in 8-bit mode |
Posted: Sat Feb 12, 2022 4:50 am |
|
|
Hello
I'm setting up a smoke sensor -MQ2.
Which I had previously launched it with the micro pic16f1939.
My module is a mq2 and only has its own sensor and has no additional board.
I made the connection according to the datasheet and the previous process with pic 16f1939.
But the problem is that it always shows the number 255, while the voltage is below 0.1 volts, and when the voltage increases, the analog voltage reaches 2 volts, but the sensor still has a maximum of 255.
I am using pic16f723a which has an 8 bit Adc.
I will put the sample code below:
Code: |
#include <16f723A.h>
#fuses PROTECT,NOWDT,NOMCLR,NOBROWNOUT,PUT
#device ADC=8
#use delay(internal=8000000)
int8 adc1;
#USE STANDARD_IO (a)
#USE STANDARD_IO (b)
#USE STANDARD_IO (c)
void main()
{
setup_adc(ADC_CLOCK_DIV_64);
setup_adc_ports(sAN4|sAN13);
while (1)
{
set_adc_channel(4);
delay_us(10) ;
adc1 =read_adc()
IF (adc1>200) output_high (power_led) ;
IF (adc1>250) output_high (up_led) ;
if (adc1>255)
{
output_high (down_led);
output_low(buzzer);
}
}
} |
Is there anything suspicious?
I myself doubted the reference voltage, but the micro does not allow writing code.
Code: | setup_vref (VREF_ADC_1v024);
setup_adc_ports (sAN7 | sAN9, VREF_FVR); |
|
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9243 Location: Greensville,Ontario
|
|
Posted: Sat Feb 12, 2022 6:46 am |
|
|
quick comments.
#fuses PROTECT,NOWDT,NOMCLR,NOBROWNOUT,PUT
remove the PROTECT fuse, NOT needed, until product goes to customer. NOT needed for 'home' use.
setup_adc(ADC_CLOCK_DIV_64);
wrong clock divider, use div_8
There's a chart, Table 15-1 that shows the proper clock vs adc configurations
while div-16 and div-32 are good, div-8 is the fastest.
FVR is the Fixed Voltage Reference, cannot be used as the ADC voltage reference. The ADC Vref is either VDD or an external precision voltage reference device.
Since you're using 8 bit ADC mode, simply use VDD as Vref. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19539
|
|
Posted: Sat Feb 12, 2022 7:18 am |
|
|
ADC1 is an 8bit value. The adc itself only returns an 8bit value. An 8bit value
can only hold 0 to 255. Hence can never be >255....
Sounds like this code may be what was being used with the ADC set
to ADC=10?.
The output voltage you get from the sensor will depend on the resistance
you have across the PIC input. The sensor needs a 5v supply to it's heater,,
and a separate supply to the sensor, with a load resistor. This should be
between 2K2 and 20KR. Without a load resistor the output will be always
5v (assuming 5v is fed to the sensor).
One other thing. You have looked really carefully at 'where' AN4 actually
is?. Key is that PortA4, does not have an analog connection. AN4 is
PortA5. Where is Vcap connected?. On these chips you need s smoothing
capacitor on one of the Vcap pins, and this has to be specified in the
fuses. You do not show a fuse for this.... The chip will not run properly
without Vcap and the voltage regulator pin selected. Understand the 'core'
of this chip runs at 3.6v. It needs the regulator to give this. The alternative
'LF' chip does not have the regulator and runs directly at 3.6v. |
|
|
GiG
Joined: 03 Sep 2021 Posts: 39
|
|
Posted: Sat Feb 19, 2022 11:39 pm |
|
|
Thank you for your accurate and professional answers.
The problem was solved with that Resistance mentioned and the analog pin check. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|