|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 12:00 pm
|
Страница 1 от 1
|
[ 10 мнения ] |
|
Проблем с АДЦ на PIC 16F877A
| Автор |
Съобщение |
|
naskoialan
Ранг: Минаващ
Регистриран на: Съб Юни 17, 2006 11:16 am Мнения: 4
|
 Проблем с АДЦ на PIC 16F877A
Здравейте, от скоро се запалих да си направя миди контролер със PIC16F877A, използвах компилатор-а на CSS PicC и успях да го нпарвя само че имам проблем за който нямам никаква идея от къде може да идва, Най напред за момента тествам само с единия аналогов вход другите са на маса през резистори при ниски напрежения близки до нулата и при напрежение близки до 5 Волта стоиноста която прочитам от АДЦ-то се колебае с 1-2
(8- Bit Integer) работната честота на процесор-а ми е 4 MHz XT конфигурация на осцилатор-а, четенето от АДЦ-то го правя по този начин :
като за момента port = 0;
int1 updateAdcValue(int8 port)
{
int1 result = 0;
int8 value;
set_adc_channel(port);
delay_ms(10);
value = read_adc()>>1;
delay_ms(1);
if( value != adcPortValues[port] )
{
result = 1;
adcPortValues[port] = value;
}
return(result );
}
Чудя се дали ако намеря кварц на 20 Мегахерца и го пусна PIC-a на тази честота нещо ще се промени ?
Това са ми настройките сега на Pic-a :
#include <16F877A.h>
#define ADC=8
#use delay(clock=4000000)
#fuses XT,NOWDT
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_DIV_8);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
Тъй като се занимавам съвсем от скоро и не съм наясно с доста неща може да съм объркал нещо.
Благодаря предварително !!
|
| Съб Юни 17, 2006 11:30 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
 Re: Проблем с АДЦ на PIC 16F877A
A трудно ти се разбира кое е проблема, но ако е това:
... считай го за съвсем нормално. Последния бит винаги си играе, ако искаш малко по-голяма точност, направи 10 измервания и усредни резултата (в случая ще е много по-удобно ако правиш 8 или 16, щото деленето на толкова е просто шифтване). Освен това тия 10ms delay са ненужно много за ADC-то (освен ако не си написал 10 за да си забавиш програмата умишлено) 
|
| Съб Юни 17, 2006 12:10 pm |
|
 |
|
naskoialan
Ранг: Минаващ
Регистриран на: Съб Юни 17, 2006 11:16 am Мнения: 4
|
 Re: Проблем с АДЦ на PIC 16F877A
Благодаря ти за отговора, за 10ms delay знам че са много просто исках да се убедя че дори при голямо изчакване пак го има това, ще използвам твоя метод  .
|
| Съб Юни 17, 2006 12:41 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Само едно допьлнение, че по този метод по-голяма точност няма да постигнеш. Точността на едно измерване не се влияе от броя на проведениете проби.
Образуването на средна стойност би ти погнало при определянето на стандартното отклонение, но не би подобрило точността, lsb си е lsb независимо колко дьлго мериш.
Няма да е лошо да хвьрлиш един поглед и в книгите по измервателна техника, разделите за статистика и стохастика, ако имаш желание да задьлбаваш по-сериозно.
А конкретно по проблема, какво имаш предвид с това
стоиността която прочитам от АДЦ-то се колебае с 1-2, какво 1-2 и колко точно около нулата?
|
| Съб Юни 17, 2006 12:59 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
@HCL, прав си, няма да е по-голяма точност...по скоро ще имаш по-сигурен резултат (поне по-малко ще плува последния бит).
PS: Според мен има в предвид, че като подаде напрежение 0.3V (примерно) ще получава стойност между 15-16, при едното замерване ще е 15, при другото 16
|
| Съб Юни 17, 2006 1:12 pm |
|
 |
|
naskoialan
Ранг: Минаващ
Регистриран на: Съб Юни 17, 2006 11:16 am Мнения: 4
|
Точно това имам предвид, целта ми е да предавам миди съобщения само ако имам промяна на входа т.е на АДЦ, а в случая при оределено напрежение при две различни замервания стойноста е различна и мисля, че само последния бит ми играе не съм сигурен.
|
| Съб Юни 17, 2006 1:52 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
Ако е последния бит не виждам кьде е проблема, освен ако си решил да "четеш" микроволтове. Какво пречи да си напаснеш долната и горната граници на стойностите, които получаваш.
|
| Съб Юни 17, 2006 2:11 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Ами избери си някой от двата метода, тоя който аз ти споменах или тоя на HCL... можеш просто да шифтнеш резултата един път вдясно и имаш твърд резултат, последния бит няма да те бърка 
|
| Съб Юни 17, 2006 2:25 pm |
|
 |
|
naskoialan
Ранг: Минаващ
Регистриран на: Съб Юни 17, 2006 11:16 am Мнения: 4
|
Много благодаря за помоща направих го с игнориране на последния бит и е наред ве4е  .
|
| Съб Юни 17, 2006 2:38 pm |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
@naskoialan
Ако не е тайна какво точно ще правиш с мидито - барабани?
или нещо друго?
Случайно се занимавам с нещо подобно в момента
|
| Съб Юни 17, 2006 8:29 pm |
|
|
|
Страница 1 от 1
|
[ 10 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|