Ir ao conteúdo
  • Cadastre-se

Pic 16f628a soft em c ajuda


caroline cabral

Posts recomendados

gostaria de saber se é posivel e se eu consigo fazer com ajuda de alguém é claro um programa em c ccs que colhese informação de um sensor e deacordo com a velocidade rpm de 1000 a 5000 ele variase a saida de uma onda quadrada o delay de uns 50 ms para 10 quando estiver em 5000 mil seria 10ms quando caise a velosidade para 2000mil ele aumentaria o delay para 50 é posivel ?

Link para o comentário
Compartilhar em outros sites

Amiga caroline, o que você pretende variar o periodo da sua onda quadrada? o que seria o delay, seria o tempo que ela ficaria em nivel alto? quanto ao resto da sua aplicação sim e possivel de se fazer sim, você pode utilizar sensores de efeito hall por exemplo e coletar os pulsos no pino de clocck externo do TMR0 e fazer a contagem deles durante um periodo para identificar a velocidade.

so explique melhor a etapa de saida para que possamos ajuda la melhor

Link para o comentário
Compartilhar em outros sites

Amiga caroline, o que você pretende variar o periodo da sua onda quadrada? o que seria o delay, seria o tempo que ela ficaria em nivel alto? quanto ao resto da sua aplicação sim e possivel de se fazer sim, você pode utilizar sensores de efeito hall por exemplo e coletar os pulsos no pino de clocck externo do TMR0 e fazer a contagem deles durante um periodo para identificar a velocidade.

so explique melhor a etapa de saida para que possamos ajuda la melhor

obrigada pela atenção é sim otempo en nivel alto e a contagem seria de um sensor de ponto ja ezistente gostaria de mexer com esse tempo de delay ou ms dela depois que saisse do pino do pic porque na entrada sera analogico venda desse sensor tem como?

decupa por alguma falha é a primeira ves que estou postando

Link para o comentário
Compartilhar em outros sites

Deixa eu ver se eu entendi, você quer variar o tempo em nível alto da saida em função de um sinal analógico é isso?

se for recomendo que você utilize os modulos PWM (para saida) e o A/D para receber o sinal analogico.

por favor me corrija se eu estiver errado para que eu possa ajuda - la.

abs.

Link para o comentário
Compartilhar em outros sites

Deixa eu ver se eu entendi, você quer variar o tempo em nível alto da saida em função de um sinal analógico é isso?

se for recomendo que você utilize os modulos PWM (para saida) e o A/D para receber o sinal analogico.

por favor me corrija se eu estiver errado para que eu possa ajuda - la.

abs.

é isso mesmo felipe eu gostaria de fazer uma especie de pwm automatico que variase na medida do rpm exemplo: quando ele estiver de 1000 rpm ate dois mil ele fica com uns 80% em nivel alto e quando passar de dois mil ele diminui o pwm pra 10 ou 20 % de nivel alto quando for +ou- uns 5000mil rpm ele fique com uns 5% so de seu nivel entendeu agradeço desde ja obrigada

dimaneira que de um pulso na entrada analogica e na saida ele coresponda e se esse sensor parar ele tambem para o seu sinal quadrado. sei que devo usar um outro pic com entrada analogica

Link para o comentário
Compartilhar em outros sites

na verdade o que você quer é uma especie de dimmer, que aumente a velocidade quando esta estiver baixa e reduza quando estiver alta. utilize a rotina pronta do pwm que esta nas bibliotecas do CCS depois capture a variavel analógica e altera a variavel duty_cicle de acordo com o valor desta.

Link para o comentário
Compartilhar em outros sites

na verdade o que você quer é uma especie de dimmer, que aumente a velocidade quando esta estiver baixa e reduza quando estiver alta. utilize a rotina pronta do pwm que esta nas bibliotecas do CCS depois capture a variavel analógica e altera a variavel duty_cicle de acordo com o valor desta.

creio que sim felip obrigadinho se não for pedir muito você colocaria para min postado para que eu possa asim esta entendendo melhor desculpa a minha iguinorancia mas ainda não tenho tanta abilidade e vai me ajudar muito

Link para o comentário
Compartilhar em outros sites

vamos la primeiro o PWM:

 /*
* Project name:
PWM1_Test_01 (PWM1 library Demonstration)
* Copyright:
(c) MikroElektronika, 2005-2008
* Description:
This is a simple demonstration of PWM1 library, which is being used for
control of the PIC's CCP module. The module is initialized and started,
after which the PWM1 Duty Ratio can be adjusted by means of two buttons
connected to pins RA0 and RA1. The changes can be monitored on the CCP
output pin (RC2).
* Test configuration:
MCU: PIC16F877A
Dev.Board: EasyPIC5
Oscillator: HS, 08.0000 MHz
Ext. Modules: -
SW: mikroC v8.0
* NOTES:
- Pull-down PORTA and connect button jumper (jumper17) to Vcc.
*/

unsigned short current_duty, old_duty;

void InitMain() {
PORTB = 0; // set PORTB to 0
TRISB = 0; // designate PORTB pins as output

ADCON1 = 7; // all ADC pins to digital I/O
PORTA = 255;
TRISA = 255; // configure PORTA pins as input

PORTC = 0; // set PORTC to 0
TRISC = 0; // designate PORTC pins as output
PWM1_Init(5000); // Initialize PWM1 module at 5KHz
}

void main() {
initMain();

current_duty = 16; // initial value for current_duty
old_duty = 0; // old_duty will keep the 'old current_duty' value
PWM1_Start(); // start PWM1

while (1) { // endless loop
if (Button(&PORTA, 0,1,1)) // button on RA0 pressed
current_duty++ ; // increment current_duty
if (Button(&PORTA, 1,1,1)) // button on RA1 pressed
current_duty-- ; // decrement current_duty

if (old_duty != current_duty) { // if change in duty cycle requested
PWM1_Change_Duty(current_duty); // set new duty ratio,
old_duty = current_duty; // memorize it
PORTB = old_duty; // and display on PORTB
}
Delay_ms(200); // slow down change pace a little
}
}

e agora o A/D:


/*
* Project name:
ADC_on_LEDs (Displaying ADC result on port LEDs)
* Copyright:
(c) MikroElektronika, 2005-2008.
* Description:
The code demonstrates using library function for AD conversion. 10 bits
result is displayed on PORTB (two most significant bits) and PORTD.
* Test configuration:
MCU: PIC16F887
Dev.Board: EasyPIC5
Oscillator: HS, 08.0000 MHz
Ext. Modules: -
SW: mikroC v8.0
*/

unsigned int temp_res;

void main() {
ANSEL = 0x04; // Configure AN2 pin as analog
TRISA = 0xFF; // PORTA is input
ANSELH = 0; // Configure other AN pins as digital I/O
TRISB = 0x3F; // Pins RB7, RB6 are outputs
TRISD = 0; // PORTD is output

do {
temp_res = ADC_Read(2); // Get 10-bit results of AD conversion
PORTD = temp_res; // Send lower 8 bits to PORTD
PORTB = temp_res >> 2; // Send 2 most significant bits to RB7, RB6
} while(1);
}


}

so umas observações , esses codigos foram feitos para o PIC16F877 você tera q fazer algumas alterações mas nada critico.

não esqueça que sao codigos de teste, você deve utilizalo de acordo com sua aplicação, esses codigos sao apenas um teste e configuração dos modulos.

t+

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!