José Caetano
-
Posts
13 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por José Caetano
-
-
Obrigado pela resposta rjjj, na sua fórmula só não entendi o que sé ln(2) ??
-
Mas pelo que entendi o modo astavel só gera ondas quadradas, correto? Eu preciso de o que seria um pwm com ondas retangulares porém com uma frequencia bem baixa, coisa de segundos.
Achei, na verdade o que eu precisava é de um multivibrados astavel!
-
Certo, achei vários circuitos. Mas nenhum variável. E nas configurações tem dois resistores, qual deles devo substituir por um potenciômetro? Ou os dois?
-
Boa tarde pessoal! Preciso muito da ajuda de vocês. Quero controlar uma carga com um 555 e preciso controlar o tempo que ela fique ligado e desligado. Por exemplo, na saída preciso que fique em 15 segundos ligado e 15 segundos desligado. Se eu mover um potenciômetro ele vai variando o tempo de ligado e desligado proporcionalmente, aumentando um e diminuindo o outro. Tem como fazer isso só com um 555 ?
-
Então não aborda nada uai! Tudo que falam não dá!
- 1
-
Experimente só trocar a configuração do Timer 2 e me diz se faz diferença. Como eu citei ali em cima.
Falou
Vou fazer os testes na placa mesmo com o motor e te digo. Obrigado até agora.
-
Olha quanto ao bug não sei te dizer mas minha dúvida na verdade é como faço pra ter um controle mais preciso do motor, ou seja conseguir fazer ele girar em baixas velocidades sem vibrar e aos poucos ir aumentando. Desse jeito que eu fiz ai até funcionou porém a velocidade não varia tanto.
-
Segue em pdf:
https://mega.co.nz/#!XRkkQZqS!2loSMaYa-8BRthifS4L_-fEpON5mRd9rUR_Xe4j6QmsSó não repara na bagunça...rs
-
Você tem o proteus 8? O problema é que não consigo simular, fica muito lento na simulação....Mas de qualquer forma segue o arquivo:
https://mega.co.nz/#!CRUE2LwR!4DvBD0tCQ0uF6ziejzbsWEVRyv5J4CEPuBgahPKTeBY -
Ah é mesmo, desculpe! Segue:
#include <16F877A.h>#device adc=8#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)#FUSES PUT //Power Up Timer#FUSES NOPROTECT //Code not protected from reading#FUSES NODEBUG //No Debug mode for ICD#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O#FUSES NOCPD //No EE protection#FUSES NOWRT //Program memory not write protected#FUSES RESERVED //Used to set the reserved FUSE bits#use delay(clock=10000000) -
#include "main.h"
unsigned int8 zero = 0b1000000;
unsigned int8 um = 0b1001111;
unsigned int8 dois = 0b0100100;
unsigned int8 tres = 0b0110000;
unsigned int8 quatro = 0b0011001;
unsigned int8 cinco = 0b0010010;
unsigned int8 seis = 0b0000010;
unsigned int8 sete = 0b1111000;
unsigned int8 oito = 0b0000000;
unsigned int8 nove = 0b0010000;
int8 motor1 = 0;
int8 motor2 = 0;
long duty = 0;
int1 sel_motor = 0; //Variável de seleção do motor-0 para motor01 e 1 para motor02
int1 var_motores = 0;
int1 motores_rodando = 0;
#define buzzer PIN_D7 // Buzzer
#define bt_motor01 PIN_E0 //Botoes de selecionar o motor
#define bt_motor02 PIN_E1 //Botoes de selecionar o motor
#define diminui PIN_C4 //Botoes de alterar o duty
#define aumenta PIN_C5 //Botoes de alterar o duty
#define led_motor01e02 PIN_C6 // Led do motor 01
#define led_debug PIN_C7 // Led do motor 02
#define led_motores PIN_B7 // Led dos motores
#define bt_motores PIN_C0 // Led da chave geral dos motores.
#define motores PIN_C3 // Saida geral dos motores.
#define motor01 PIN_C4 // Saida do Motor 01.
#define motor02 PIN_C5 // Saida do Motor 02.
testa_duty();
testa_botoes();
toca_buzzer();
void main (void)
{
setup_adc_ports(NO_ANALOGS);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_2(T2_DIV_BY_16, 155, 1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
output_high(led_debug);
delay_ms(50);
output_low(led_debug);
delay_ms(100);
output_high(led_debug);
delay_ms(50);
output_low(led_debug);
delay_ms(100);
output_high(led_debug);
duty=431;
while (1)
{
testa_duty();
testa_botoes();
if((duty!=279)&&(motores_rodando==1))
{
if(sel_motor==0)
{
set_pwm1_duty(duty);
set_pwm2_duty(0);
output_low(led_motor01e02);
}
else
{
set_pwm1_duty(0);
set_pwm2_duty(duty);
output_high(led_motor01e02);
}
}
if(motores_rodando==0)
{
set_pwm1_duty(0);
set_pwm2_duty(0);
}
if(sel_motor==0)
{
output_low(led_motor01e02);
}
else
{
output_high(led_motor01e02);
}
}
}
testa_botoes()
{
if((!input(aumenta))&&(duty<659)) //Teste se foi pressionado o botão de aumentar duty.
{
delay_ms(10);
if(input(aumenta)) //Debouce
{
duty=duty+38;
toca_buzzer();
}
}
if((!input(diminui)&&(duty>279))) //Testa se foi pressionado o botão de diminuir duty.
{
delay_ms(10);
if(input(diminui)) //Debouce
{
duty=duty-38;
toca_buzzer();
}
}
if(!input(bt_motores)) //Teste se foi pressionado o botão da chave geral dos motores.
{
delay_ms(10);
if(input(bt_motores)) //Debouce
{
if(var_motores==0)
{
var_motores=1;
toca_buzzer();
}
else
{
var_motores=0;
toca_buzzer();
}
}
}
if(var_motores==0)
{
motores_rodando=0;
output_low(led_motores);
}
else
{
output_high(led_motores);
motores_rodando=1;
}
//Testa botoes de seleção dos motores.
if(!input(bt_motor01)) //Teste se foi pressionado o botão do motor 01.
{
delay_ms(50);
if(input(bt_motor01)) //Debouce
{
sel_motor=0; // 0 para motor 1.
toca_buzzer();
}
}
if(!input(bt_motor02)) //Teste se foi pressionado o botão do motor 02.
{
delay_ms(50);
if(input(bt_motor02)) //Debouce
{
sel_motor=1; // 1 para motor 2.
toca_buzzer();
}
}
}
testa_duty()
{
if(duty==279)
{
set_pwm1_duty(0);
set_pwm2_duty(0);
output_a(zero);
output_b(zero);
output_d(zero);
}
else if(duty==317)
{
output_a(zero);
output_b(um);
output_d(zero);
}
else if(duty==355)
{
output_a(zero);
output_b(dois);
output_d(zero);
}
else if(duty==393)
{
output_a(zero);
output_b(tres);
output_d(zero);
}
else if(duty==431)
{
output_a(zero);
output_b(quatro);
output_d(zero);
}
else if(duty==469)
{
output_a(zero);
output_b(cinco);
output_d(zero);
}
else if(duty==507)
{
output_a(zero);
output_b(seis);
output_d(zero);
}
else if(duty==545)
{
output_a(zero);
output_b(sete);
output_d(zero);
}
else if(duty==583)
{
output_a(zero);
output_b(oito);
output_d(zero);
}
else if(duty==621)
{
output_a(zero);
output_b(nove);
output_d(zero);
}
else if(duty==659)
{
output_a(um);
output_b(zero);
output_d(zero);
}
}
toca_buzzer()
{
output_high(buzzer);
delay_ms(50);
output_low(buzzer);
} -
Boa noite pessoal! Certo, vou direto ao assunto. Meu problema é o seguinte: Preciso controlar um motor por pwm para variar a velocidade dele de 10% em 10%, 0 ele fica desligado e em 100% em rotação máxima. Fiz um código tirando como base alguns exemplos que encontrei na net, porém quando eu coloca o duty em 10% por exemplo o motor só vibrava e não rodava, só com duty acima dos 40% que ele começava a girar. Ai li que eu preciso usar o duty da metade do valor pra cima para o motor funcionar desde o início. Ok, fiz isso e realmente funcionou, agora ele gira mesmo com 10% de duty, porém agora ele não altera muito a velocidade com duty em 10% ou 90% por exemplo, ou seja, a velocidade não varia muito. Como posso resolver isso? Segue trechos do código de como configurei no pic:
setup_timer_2(T2_DIV_BY_16, 155, 1);setup_ccp1(CCP_PWM);setup_ccp2(CCP_PWM);set_pwm1_duty(0);duty=431;testa_botoes(){if((!input(aumenta))&&(duty<659)) //Teste se foi pressionado o botão de aumentar duty.{delay_ms(10);if(input(aumenta)) //Debouce{duty=duty+38;toca_buzzer();}}if((!input(diminui)&&(duty>279))) //Testa se foi pressionado o botão de diminuir duty.{delay_ms(10);if(input(diminui)) //Debouce{duty=duty-38;toca_buzzer();}}
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
Lm555 como temporizador
em Eletrônica
Postado
E exatamente esse circuito que me atendeu! Como você mesma disse fiz a alteração no capacitor e coloquei de 470uF e ficou excelente! Só gostaria de saber como fazer as contas mas do jeito que o rjjj tentou explicar eu não entendi o que seria aquela constante que ele disse.