Ir ao conteúdo

MatheusLPS

Membro Pleno
  • Posts

    2.891
  • Cadastrado em

  • Última visita

Tudo que MatheusLPS postou

  1. Boas notícias então. você está fazendo correto. É melhor fazer o C# chamar funções no PIC do que fazer o PIC enviar valores e deixar o C# esperando por eles. Dessa forma fica mais estável o projeto. Qualquer dúvida, só chamar. Mas tenho um outro projeto igual a esse que funciona plenamente inclusive no windows 7 64 bits. Mas o protocolo é totalmente diferente. Mas o esquema é o mesmo. Só muda a programação do C# e o driver que fizeram um novo. Falou
  2. Olha só, o erro foi meu. você tinha escrito lá em cima mas não prestei atenção. SEguinte, se os LEDs estão em série, a corrente necessariamente tem que passar em todos. Ainda não conegui pensar num jeito de ativar 1 de cada vez. Já pensou em usar um circuito PWM com um 555? Fica pequeno e você varia o brilho dos 3 leds ao mesmo tempo com um potenciômetro. Fica mais fácil de fazer. Falou
  3. Opa, baixei minha versão do Visual C# aqui ó: http://www.microsoft.com/express/Downloads/ Só escolher a opção "All - Offline Install ISO image file". Tem 1.6GB. Ela vem com todos. Atualizei minhas .dll como você fez. Mas no windows XP funciona normal. você tem o proteus aí poder testar? você pode ao invéz de usar uma placa pronta, testa no proteus primeiro. você dá play no circuito o windows vai reconhecer, vai pedir driver e você usa o programa feito no c# p comandar o PIC do proteus. Qualquer dúvida, estou por aqui. Falou
  4. E ae. Td bem? Sim! Consegui resolver. Cara, como esse mundo é pqueno, você encontrou minha dúvida em outro fórum q nem me lembro mais qual é e me encontrou aqui. Seguinte. Pela screenshot q você tirou, percebe-se que você utiliza windows 7. Correto? Esse projeto apenas funciona no windows XP. Na verdade, eu até consegui fazer funcionar no windows 7 32bits mas depois d um tenpo começou a dar esse erro ai. A única coisa que resolvou foi eu formatar o PC e instalar o windows XP enquanto estava desenvolvendo o projeto. Caso você não queira formatar o PC, tenho outra solução para você. Já ouviu falar no Windows XP Mode? è um aplicativo que você baixa do site da microsoft e ele emula o windows XP sobre o windows 7. Com ele consegui faezr funcionar também. você faz o download dele aqui ó: Download windows XP Mode São 3 arquivos. Tem uns 600MB mas vale a pena. Melhor usar ele doq formatar o PC né. Se a dúvida resolver, posta aqui. Falou
  5. Opa, é isso aí colega Jorge, sempre que possível estou ajudando... Falou
  6. Acabei de fazer, fresquinho: Circuito: Qualquer crítica em relaçao é bem vinda. Falou
  7. Qual o valor da tensão de trabalho e corrente de cada led? Falou
  8. Marsil, os pinos de enable só servem para ativar/desativar o chip. Nivel alto/baixo nesse caso. EDIT: Estive olhando o bloco interno do chip: Reparem nos pinos de Enable 1 e de IN 1 e In2. Eles vão para uma porta lógica. Estive pensando sobre a pergunta do colega e me parece que posso sim aplicar PWM ao ENABLE. A diferença que notei é que se aplicarmos o pwm no enable, o motor não pára de imadiato quando o PWM está em nível baixo. Fica uma espécie de roda livre. Ao contrário de aplicarmos PWM em um dos IN. Digo, se aterrarmos o IN2 e aplicarmos PWM ao IN1. Uma hora os dois serão 0 pela natureza do sinal PWM. Isso funciona como freio. o que vocês acham? Falou
  9. Opa, bom que tenha gostado do resultado. Do jeito que você quer, funciona sim perfeitamente. Podemos utilizar apenas 2 botões: você deve estipular um valor para o duty_cicle. Nesse exemplo que passo agora ele recebe 125 ou 50%. Se apertar o botão de ENABLE, ele ativa o chip, o motor começa a girar para um lado na velocidade programada. Se apertar de novo, ele pára o chip. O outro botão, inverte a rotação para o outro lado na velocidade desejada. Dessa forma o código pode se tornar bem mais simples utilizando as interrupções. Circuito: Código: #include <16F877A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES XT //Clock <=4Mhz #FUSES PUT //Power Up Timer #FUSES NOPROTECT //Code not protected from reading #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 #use delay(clock=4000000) #define botao_stop PIN_D2 #define botao_inverte PIN_D4 int1 modo=0, stop; void main() { output_high(PIN_B0); SETUP_CCP1(CCP_PWM); SETUP_CCP2(CCP_PWM); setup_timer_2(T2_DIV_BY_4,249,1); set_pwm1_duty(0); set_pwm2_duty(0); while (TRUE) { if (stop == 1) { output_high (PIN_B0); if (modo == 0) { set_pwm1_duty(125); set_pwm2_duty(0); } if (modo == 1) { set_pwm2_duty(125); set_pwm1_duty(0); } if (input(botao_inverte)) { modo++; do{} while(input(botao_inverte)); } } if (stop == 0) { output_low (PIN_B0); } if (input(botao_stop)) { stop++; do{} while(input(botao_stop)); } } } Arquivos: http://www.4shared.com/file/3ZszGjIp/PWM_L298_versao_2.html Nao deixe de ler esse tópico: http://forum.clubedohardware.com.br/motor-pwm-pic/857314 Dúvidas? Pergunte! Falou
  10. Fala garoto, claro q lembro de você..... Bem, vamos lá: Seguinte, sua lógica está correta sobre o funcionamento. Mas falta uns detalhes. você já estudou sobre o PWM? Um sinal de alta frequencia e que alteramos o ciclo de trabalho dele. Quanto mais alto for o ciclo de trabalho, mais potência entregamos ao motor. Esse ciclo de trabalho é o tempo do PWM que fica ON dividido pelo período total. Nesse caso, teremos que aumentar em mais 1 botão. Se você utilizar as interrupçoes do PIC fica fácil. Fica assim: 1 botão para incremento do ciclo do PWM e 1 botão para decremente do ciclo, sendo que o ciclo vai de 0 a 100%. 1 botão para troca de sentido do motor. 1 botão para o enable/disable... SE você usasse o CCS eu poderia fazer um código de teste pra você. Não sei programar no MikroC. Vou p faculdade agora e mais tarde monto o circuito de exemplo p você. EDIT: Fiz um exemplo. O código está simples e sem refinamento pois fiz ele rapidin aqui. Sei que é para outro compilador, mas serve para você ter uma ideia. Hospedei os arquivos para simulação. Só fazer o download lá em baixo: Circuito: Código: #FUSES NOWDT //No Watch Dog Timer #FUSES XT //Clock <=4Mhz #FUSES PUT //Power Up Timer #FUSES NOPROTECT //Code not protected from reading #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 #use delay(clock=4000000) #define botao_incremento PIN_D0 #define botao_decremento PIN_D1 #define botao_stop PIN_D2 #define botao_inverte PIN_D4 int8 ciclo_1, ciclo_2; int1 modo=0, stop; void main() { output_high(PIN_B0); SETUP_CCP1(CCP_PWM); SETUP_CCP2(CCP_PWM); setup_timer_2(T2_DIV_BY_4,249,1); set_pwm1_duty(0); set_pwm2_duty(0); while (TRUE) { if (stop == 1) { output_high (PIN_B0); if (modo == 0) { if (input(botao_incremento)) { ciclo_1 = ciclo_1 + 5; do{} while(input(botao_incremento)); } if (input(botao_decremento)) { ciclo_1 = ciclo_1 - 5; do{} while(input(botao_decremento)); } set_pwm1_duty(ciclo_1); set_pwm2_duty(0); } if (modo == 1) { if (input(botao_incremento)) { ciclo_2 = ciclo_2 + 5; do{} while(input(botao_incremento)); } if (input(botao_decremento)) { ciclo_2 = ciclo_2 - 5; do{} while(input(botao_decremento)); } set_pwm2_duty(ciclo_2); set_pwm1_duty(0); } if (input(botao_inverte)) { modo++; do{} while(input(botao_inverte)); } } if (stop == 0) { output_low (PIN_B0); } if (input(botao_stop)) { stop++; do{} while(input(botao_stop)); } } } #include <16F877A.h> Link com os arquivos: http://www.4shared.com/file/sskt4SGf/PWM_L298.html Falou
  11. Bom, vamos lá: O pino RB0 está indo no pino ENABLE do L298. Se você leu o datashhet do L298, vai lembrar que esse pino é responsável pela habilitação/desabilitação do chip. Se você colocar nível alto, 5V, o chip é ativado, nível baixo, 0V, o chip é desativado ou seja o motor para. Os pinos RB1 e RB2 estão indo nos pinos INPUT 3 e INPUT 4. Mais uma vez, do datasheet, na página 6, na Figura 6: Interpretando a tabela acima: Se você colocar nível alto no INPUT 3 e nível baixo no INPUT 4, o motor gira para um lado, se você colocar nível baixo no INPUT 3 e nivel alto no INPUT 4, o motor gira para o outro lado. Simples. A unica coisa a ser feita no PIC é colcar as portas em nivel alto ou baixo. Caso queira utilizar o PWM, você aplica PWM em um dos INPUTS e o outro você aterra. Depois você inverte e ele gira devagar ou rápido para o outro lado. Qual compilador que você usa? Programa em C? Usa o proteus p simular? Falou
  12. Dê uma olhada nesse tópico: Question of getc() E nesse: RS-232 data between PC and PIC getting jumbled SE você não entender, quando eu voltar da rua faço um exemplo p você. Falou
  13. Atenção!!!! Algumas pessoas me disseram que as imagens não estavam aparecendo. Estão mudei todos de servidor, não utilizo mais o imageshack. Uso o http://imgur.com/ Quando a dúvida do colega acima. Nao estou familiarizado com a comunicação CDC. Falou
  14. Excelente iniciativa colega Mulder_Fox!!! Quando comecei a programar nao encontrei uma apostila com linguagem mais didática. Aí acabei indo pro C! Boa! Falou
  15. Tópico excelente. Mais uma vez, o colega Faller esclarecendo de uma maneira eficaz as dúvidas do pessoal!!! Falou
  16. Tenta desinstalar os drivers USB do proteus, reinia o PC, instala d novo... Falou
  17. Caro colega felipeetec, obrigado pelo comentário. Então, verifiquei o link e está funcionando sim: Projeto Final test man*~, ficou ótima sua aplicação! Funcionou direitinho! Acontece as vezes do 4shared dar pau! Falou
  18. Exato, a comunicação HID é bem mais lenta. Tanto que HID encontramos mouse, joystick, etc O resto é bulk. Falou
  19. Boa test man*~. Gostei do resultado obtido!! Fico contente que tenha se empenhado. Agora você já pode fazer o contrário. O Labview enviar dados ao PIC e fazer alguns leds acenderem? Falou
  20. Como você sabe que ele está queimado? Falou
  21. Aquele montagem com LCD não possuo mais. No entanto, tenho uma rotina de LCD de teste aqui: Código: #include <16F877A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES XT //Crystal osc <= 4mhz #FUSES PUT //Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NODEBUG //No Debug mode for ICD #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #use delay(clock=4000000) #include <lcd.C> /*void lcd_scroll_right(void) { lcd_send_byte(0, 0x1E); } //------------------------- void lcd_scroll_left(void) { lcd_send_byte(0, 0x18); } //Colocar essa parte do código logo abaixo da frase grande. for(i = 0; i < 20 ; i++) { lcd_scroll_left(); delay_ms(50); // scroll delay } */ void main() { lcd_init (); while (true) { lcd_gotoxy (1,1); lcd_putc("Teste LCD"); delay_ms(500); lcd_putc("\f"); delay_ms (500); lcd_gotoxy (1,2); lcd_putc("com PIC"); delay_ms (500); lcd_putc("\f"); delay_ms (500); } } Circuito: Falou
  22. Olha, quando você pensa em fazer a comucação pela USB no PC, pelo menos entendo que o hardware deve fciar próximo ao PC. Para aumentar essa distância você pode usar módulos RF como comentei no outro tópico. Aí, nesse caso você precisa de 2 PICs: 1 vai estar no PC e o outro será o escravo q só receberá as ordens do primeiro PIC. Falou
  23. Recomendo que teste na protoboard primeiro. A chance de dar errado é grande no início. Falou
  24. você está correto. Utilizei um polarizado, eletrolítico, no pino VUSB de 47uF. O positivo vai no pino e o negativo no terra. Um amigo meu estava usando um verde grande q nao sei o nome e teve problemas. O de 100nF é para deixar a alimentação do PIC bem estável. Se você não utilizar um capacitor ali, quando tentar acender um led pelo PIC, ele simplesmente reinicia!!! Falou

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!