José Caetano
Membro Júnior-
Posts
13 -
Cadastrado em
-
Última visita
Reputação
1-
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.
-
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 ?
-
Feedback para nova edição do livro Eletrônica
José Caetano respondeu ao tópico de Gabriel Torres em Eletrônica
Então não aborda nada uai! Tudo que falam não dá! -
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_Xe4j6Qms Só 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