Ir ao conteúdo
  • Cadastre-se

test man*~

Membro Pleno
  • Posts

    571
  • Cadastrado em

  • Última visita

Tudo que test man*~ postou

  1. Acabei baixando o MikroC só para testar... =D Olha ai, deu certinho: float var_float = 2987.658; int var_int16 = 0; char msbyte_int8 = 0; char lsbyte_int8 = 0; void main() { TRISA = 0; // set direction to be output TRISB = 0; // set direction to be output TRISC = 0; // set direction to be output PORTC = 0; PORTB = 0; var_int16 = (int) var_float; lsbyte_int8 = var_int16; msbyte_int8 = (var_int16 & 0xFF00) >> 8; PORTC = msbyte_int8; PORTB = lsbyte_int8; do { } while(1); }
  2. Type cast hehe... var_int16 = (int) var_float; lsbyte_int8 = var_int16; msbyte_int8 = (var_int16 & 0xFF00) >> 8;
  3. Será que assim vai, estou chutando em... =D var_int16 = var_float; // Pega só a parte inteira lsbyte_int8 = var_int16; // byte menos significativo msbyte_int8 = (var_int16 & 0xFF00) >> 8; // byte mais significativo
  4. HAuHUaHUahUAhUAH, esses servos são famintos por potência e como pretendo ler a posição deles eu queria deixar a tensão o mais estável possível. Resolvi comprar aquelas placas prontas para o regulador LT1083 e então modificar para fornecer 7 volts fixos (um dos servos tem sua tensão máxima de 6V mas o bichinho aguentou bem até agora); e lendo o datasheet do LT percebi que desde que a temperatura não passasse de 80°C a tensão fornecida por ele seria excelente para a minha aplicação, então resolvi colocar um dissipador de calor maior do que o que vem no kit e também um cooler, porém eu quebrei a cara... Cometi um erro, um não, vários... Considerei que a corrente normal drenada seria a corrente máxima dos servos (quando eles estão travados), outro erro foi que achei que o potenciômetro de feedback do servo estava ligado diretamente à alimentação do servo mas não está o servo possui um regulador interno. Os servos não estão fazendo nem cócegas no LT e nem muito menos na fonte principal (12V 20A)... Isso tudo pois achei que conseguiria fazer o robô ser bem preciso mas ele está longe de ser tão preciso quanto eu queria AUHauHauHauHAuHAuHAU, para a precisão que eu queria o robô deveria usar motores de passo no lugar dos servos... Quanto à CNC... Até onde eu dei uma lida da para deixar ela bem precisa ela pode até ficar lenta, mas a precisão é garantida (desde que a estrutura seja boa com anti-backslash, bem rígida, motores fortes e coisas do tipo). Se aumentar o microstepping ela fica mais precisa mas o torque dos motores cai, aumentando a tensão dos motores de passo o torque aumenta novamente, mas a tensão é limitada pelo driver do motor e por ai vai... Ká estou viajando já!!!! Mas isso é coisa para o futuro esse robô ainda tomará muito tempo, já coloquei ele em hold de novo... Agora eu só mexo com ele em fevereiro =D Nossa, falei de mais VIXI!!!! Mas vou postar mais isso, quem sabe é útil para alguém um dia. Seguem as modificações que eu fiz no módulo do LT1083: Original Modificado Modulo original
  5. A vantagem de usar a própria placa do arduino (vou usar o BASCOM usarei apenas o hardware do arfuino) é que ela é bem bonitinha e já existem várias coisas pré preparadas pra ela, vou usar aquele protoshield (da foto) para colocar os buffers das entradas analógicas (sem eles os servos ficam loucos) além de um FT232 pois vou usar as linhas RTS/CTS/DTR na comunicação com o PC... Pela facilidade que as placas arduino oferecem elas acabam me puxando para elas... Se eu criar a placa ela não ficaria tão bonita quanto o protoshield (quando eu montar a CNC ela ficará xD)... Mas realmente sua solução seria a mais inteligente, a serial do hardware ficaria para comunicação com o PC e a por software com o outro controlador (ATmega328 neste caso)! Valeu ae!
  6. É o mikroC? Se for o talvez software da MikroE "Timer Calculator" possa te ajudar. http://www.mikroe.com/supporting-software/
  7. Ae mestre Paulão @aphawk ... Meu primeiro projeto físico com AVR, vou usar o a ATmega2560 por ele ter mais de uma porta serial. Ainda estou na fase da montagem física (trabalheira da po&%$*#) mas uma hora fica pronto. Depois disso vai ser uma CNC, o controle principal será o arduino uno mesmo mas vou criar controle de velocidade para o spindle, monitoramento de temperatura e outros e para isso será AVR... eu devia ter começado pela CNC pois ela me permitiria criar novas peças pro robô.
  8. Eu estava procurando uma forma de ler a posição de alguns servos motores, acabei achando... Vou postar aqui pois pode ser útil para outra pessoa. Os servos (que não usam Indução Magnética) possuem um potenciômetro interno que fornece o feedback para o seu circuito realizar o posicionamento, para ler a posição atual dos servos eu soldei um fio ao potenciômetro e então anotei os valores para algumas posições do servo, assim da para levantar a equação da posição em função da tensão de feedback. O interessante é que para uma largura de pulso entre 1000 e 2000uS a tensão de feedback é linear, pelo menos para os modelos que eu modifiquei. Algumas informações interessantes que encontrei durante o caminho: 1 - Os servos analógicos normalmente aceitam uma rotação de até quase 180° (largura de pulso 500 ~ 2500uS); 2 - Os servos digitais podem ser programados para que sua rotação seja máxima seja limitada, além disso o Fail Safe (como será o comportamento do servo quando o seu pino de sinal fica constantemente em Low ou High) pode ser habilitado ou desabilitado, dentre outros; 3 - Eu precisei ligar dois servos em paralelo, um de frente para o outro... Como eles eram idênticos precisei inverter a rotação de um, para isso eu inverti os fios do motor e também os fios externos do potenciômetro. Seguem as imagens e gráficos:
  9. O CCS também pode criar um arquivo .h com todos os registradores (ou apenas os escolhidos por você), para isso use o "Device table editor" aba "Registers" olhe um exemplo para o PIC16F877A (é configurável de forma que no lugar de MCU_ pode ser REG_ ou outra coisa que você julgar melhor):
  10. Ai está um exemplo (PIC16F877A, compilador CCS C): float resultado_float = 0; int resultado_int = 0, variavel_1 = 10, variavel_2 = 20; .................... resultado_float = (float) variavel_1 * variavel_2; 00E7: BCF 03.5 00E8: CLRF 2C 00E9: MOVF 25,W 00EA: MOVWF 2B 00EB: CALL 004 00EC: MOVF 7A,W 00ED: MOVWF 2A 00EE: MOVF 79,W 00EF: MOVWF 29 00F0: MOVF 78,W 00F1: MOVWF 28 00F2: MOVF 77,W 00F3: MOVWF 27 00F4: CLRF 2C 00F5: MOVF 26,W 00F6: MOVWF 2B 00F7: CALL 004 00F8: MOVF 2A,W 00F9: MOVWF 2E 00FA: MOVF 29,W 00FB: MOVWF 2D 00FC: MOVF 28,W 00FD: MOVWF 2C 00FE: MOVF 27,W 00FF: MOVWF 2B 0100: MOVF 7A,W 0101: MOVWF 32 0102: MOVF 79,W 0103: MOVWF 31 0104: MOVF 78,W 0105: MOVWF 30 0106: MOVF 77,W 0107: MOVWF 2F 0108: GOTO 021 0109: MOVF 7A,W 010A: MOVWF 23 010B: MOVF 79,W 010C: MOVWF 22 010D: MOVF 78,W 010E: MOVWF 21 010F: MOVF 77,W 0110: MOVWF 20 .................... resultado_int = (int) variavel_1 * variavel_2; 0111: MOVF 25,W 0112: MOVWF 27 0113: MOVF 26,W 0114: MOVWF 28 0115: GOTO 098 0116: MOVF 78,W 0117: MOVWF 24
  11. Eu estava falando da apostila mesmo =D... Que é basicamente um livro hehe. Interessante o NoSave Tool... O que eles deviam fazer é lançar o Bascom ARM daí o @aphawk criaria outra apostila e todos nós aprendiríamos ARM Eu estou no meio das compras para construção de um braço robótico, vou usar o ATmega2560 (Placa arduíno)... Alguns dos componentes: O Suction Cup foi enviado com comprimento errado Vamos ver se isso vai sair, hehe... Off:
  12. Eu lembro que fazia os programas mas frequentemente eu me pegava pensando: "O que o microcontrolador realmente está fazendo nessa linha?"... Daí resolvi ler o datasheet inteiro do PIC16F628A foi uma experiencia muito bacana, toda hora eu pensava: "Putz, então é assim que funciona?"... Quando terminei de ler fiz vários exercícios em Assembly para dar uma fixada e documentar o aprendizado. De tanto o @aphawk falar eu acabei me interessando pelos AVRs... Aprendi sobre eles usando o livro do @aphawk... Mas sempre que um novo assunto era introduzido eu dava uma lida no datasheet para realmente entender... Sei lá... Eu gosto de ler datasheet, é meio que gratificante saber como as coisas funcionam, principalmente datasheet desses módulos sensores para Arduíno... É bom ler, entender e fazer biblioteca pro Bascom ou CCS
  13. Lendo sobre servo motores encontrei várias coisas interessantes sobre RC... Na hora pensei: "Com certeza o Paulo mexeu ou mexe com essas coisas..." Caraca! 2,20Mts? Vixi... Você é profissional então! Daqui há um tempo vou arrumar um helicóptero pra fazer ele voar de cabeça para baixo e de ré balançando nas laterais igual eu vi nos vídeos. HAHHAhahahHAhha. õ/
  14. Dê uma pesquisada sobre o Roborealm, vi algumas pessoas usando ele para "dar olhos" a alguns braços robóticos, ele se comunicava via RS232 com a placa de controle do robô; entretanto, não tenho certeza se é possível fazer reconhecimento facial, eu apenas acho que é xD. [...] If you download the latest version we've added in a beta version of a face detection module [...] Aqui: http://www.roborealm.com/forum/index.php?thread_id=4645
  15. _________ Apenas para fechar, fiz a pergunta no fórum da Adafruit e eles responderam que a maioria dos servos cortará a energia do motor "desligará o torque" se não houver pulso por 40~50mS. Ou seja, basta retirar o pulso (seja colocando nível zero ou alta impedância) e esperar um tempinho que o servo não se oporá ao movimento. _________ Solução ideal, motores para braços robóticos (funcionam até com RS-485), feedback de temperatura, torque, posição, ajuste dos parâmetros do PID interno e vários outros, $1099 (dólar ) por 6... http://www.trossenrobotics.com/p/MX-28T-dynamixel-actuator-6-pack.aspx
  16. É... Vou testar... O problema que vai demorar chegar xD Este exemplifica bem, repare o fio azul levando a tensão do POT interno do servo. Valeu pelas dicas @aphawk e @Isadora Ferraz .
  17. O primeiro vídeo mostra a Lady Ada movimentando o servo alimentado (considero que ele está alimentado, caso contrário não seria possível ler o feedback), e depois o servo repetindo o movimento. No segundo vídeo a Lady Ada diz que antigamente as pessoas extraiam o sinal de feedback hackeando o servo, então ela entrou em contato com uma empresa que fabrica servos (comuns) e perguntou se seria possível eles fabricarem servos com o fio de feedback, eles disseram que sim desde que ela comprasse 500. Assim dá para concluir que aqueles (do vídeo) são servos comuns, em que o fio, que antes era colocado hackeando, foi colocado na fábrica. Os servos que eu pretendo usar são o MG996r e o MG90S Tower Pro originais. Vídeos: https://www.adafruit.com/product/1404 Vou fazer o seguinte: Comprar um único servo e testar Hehe... Vou mandar uma pergunta para Adafruit, quem sabe eles respondem! Quando fizer o teste posto os resultados aqui!
  18. Bacana, motor de passo seria o mais show (principalmente pelos 360 graus) mas seria complicado conseguir a estrutura física do robô, eu achei uma estrutura muito bacana, meio cara, mas bacana, ela foi feita para servos. A minha ideia é alterar o servo, colocar um outro fio, pegar essa tensão usada internamente e lê-la com o AVR através de um buffer com AO para não atrapalhar o controle interno do servo... O braço teria 7 dof contando com o movimento da garra.
  19. É por que eu pretendo comprar um pacote com vários e então colocar um fio em cada um para o microcontrolador ter o feedback... Basicamente será uma braço robótico que o usuário pode ensinar os movimentos a ele, movendo-o, manualmente, para as posições desejadas.... Senão for possível movê-lo com a mão alimentado (não gerando o feedback) eu perco o interesse no projeto, daí nem comprarei os servos... Por isso eu não tentei , queria ter essa informação para depois comprar. Talvez colocando o pino de controle em HZ ou Low ou talvez High seja possível... Teclado do celular desculpe pelos erros
  20. Estou com uma dúvida, se eu alimentar um servo motor normalmente mas deixar o seu pino de controle sempre em zero (nível baixo) o que acontece? Eu consiguirei girá-lo com a mão? Existe alguma forma de deixá-lo alimentado e girá-lo sem ele se opor ao movimento?
  21. Eita 4 canais você hackeou ele né? Pra mim o DS1052E já estaria de bom tamanho mas a Farnell vazou do Brasil (não sei como eles conseguiam vender ele por R$1K) e para importar é mais 100% de imposto... Eita vida HAHAHA Se todas as suas imagens mudarem... UAHuHAuHauHUaUAH Melhor nem imaginar!! Mas beleza, valeu ai.
  22. @aphawk você não possui um osciloscópio digital para vender não? Pescaria... A foto mudou... LOL
  23. muito bom... Até me atiçou a fazer novos projetinhos mas o tempo não ajuda HAHA... Então vou apenas compartilhar o último que fiz antes do tempo acabar... É uma comunicação I2C entre um PIC (mestre) e um AVR (escravo). Só antes, quero te agradecer de novo @aphawk por ter me introduzido aos AVRs. Código para o PIC foi feito com o CCS C e para o AVR com o BASCOM AVR. O AVR lê a temperatura de um LM35 e possui dois LEDs conectados a ele, o PIC lê a temperatura do AVR e controla o estado dos leds via comandos serial (digitar l11 liga o led 1 e l10 desligá-lo; l21 para ligar o led 2 e l20 para desligá-lo...) A biblioteca para TWI Slave do BASCOM AVR era um produto a parte então fiz o código escrevendo nos registradores mesmo, o TWI do AVR é bem bacana, seria tranquilo fazer ele funcionar como um multimestre ou hora como escravo e hora como mestre. Usando o "clock stretching" deu para fazer a comunicação I2C a 1MHz. A comunicação fica assim: Circuito: Código mestre: Código escravo: Arduivos para download (código e simulação): Clique aqui.
  24. Não posso acompanhar como eu fazia antigamente, o meu tempo pereceu ... Mas vou ir lendo até o fim e tentarei montar um pra mim depois de pronto ... Valeu ai @aphawk

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!