реклама на сайте
подробности

 
 
> Помогите реализовать управление ДПТ на PIC16F876A
Ronin777
сообщение Jan 21 2010, 19:06
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 21-01-10
Пользователь №: 54 983



Здравствуйте еще раз...сделал в Протеусе вот такую схемку

далее заливаю вот такой код
CODE
#include<pic.h>

#define START_FUN 768
#include "delay.h"


int adc_res;
int pwm_val;

main(){

TRISA =0xFF;
TRISC = 0;
/******** настройка ШИМ *********/
T2CON = 0x01; //TMR2 выходной делитель 1:1, предделитель - 1:1
PR2 = 0xFF; //длительность ШИМ
CCPR1L = 0;
CCP1CON= 0x0C; //включить ШИМ
TMR2ON = 1; //TMR2 включить
/******** настройка АЦП **********/
ADCON0= 0x81; //модуль включен, Fosc/32
ADCON1= 0x8E; //выравнивание вправо, 1 вход аналоговый
ADIF = 0; //сбросить флаг прерывания от АЦП
DelayUs(40);
ADGO = 1; //начать преобразование

while (1){

if( ADIF ){
ADIF = 0;
adc_res = ADRESH * 256 + ADRESL;
if(adc_res > START_FUN){
pwm_val = (adc_res - START_FUN) * 5;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
else{
pwm_val = 0;
CCPR1L=(char)(pwm_val>>2);
CCP1CON=((char)(pwm_val<<4)&0x30) | 0x0C;
}
DelayUs(40);
ADGO = 1;
}
}
}

проблема заключается в том что на PORTC не генерируется ШИМ...он постоянно остается 0...что не так сделал подскажите пожалуйста...

PS Ув. админы извините за флуд сразу не заметил этого раздела...

Сообщение отредактировал rezident - Jan 23 2010, 12:13
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_@Ark_*
сообщение Jan 23 2010, 15:11
Сообщение #2





Guests






Цитата
не помогло...

Схема у Вас непонятная какая-то... Да и программа....
Объясните сначала хотя бы на словах, что хотите получить?
Где питание? Где "обвеска" PIC-а? Где кварц? Или от внутреннего генератора работаете? Но его вроде бы нет в этом пике. Почему MCLR в воздухе? В общем слишком много вопросов...
Не знаю как в симуляторе, "в железе" это работать не будет. Потому что не должно...
Go to the top of the page
 
+Quote Post
Ronin777
сообщение Jan 23 2010, 22:08
Сообщение #3





Группа: Участник
Сообщений: 6
Регистрация: 21-01-10
Пользователь №: 54 983



Цитата(@Ark @ Jan 23 2010, 19:11) *
Схема у Вас непонятная какая-то... Да и программа....
Объясните сначала хотя бы на словах, что хотите получить?
Где питание? Где "обвеска" PIC-а? Где кварц? Или от внутреннего генератора работаете? Но его вроде бы нет в этом пике. Почему MCLR в воздухе? В общем слишком много вопросов...
Не знаю как в симуляторе, "в железе" это работать не будет. Потому что не должно...


это симулятор, "обвеска" идет программная (Proteus), я вроде разобрался в чем проблема, у меня не получилось настроить ШИМ контроллера (скорее всего это неполадка в Proteus) поэтому пришлось реализовать ШИМ программно, вроде все получилось.
А идея программы заключается в том, что мы подаем на аналоговый вход с датчика температуры сигнал и в зависимости от этого сигнала управляем двигателем, чем больше напряжение на аналоговом входе тем выше скорость двигателя.
Будет ли это работать в железе никому не интересно, боюсь препод и в СИ особо не разбирается, но надеюсь он меня пойметsmile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 05:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016