Ir ao conteúdo

test man*~

Membro Pleno
  • Posts

    567
  • Cadastrado em

  • Última visita

Tudo que test man*~ postou

  1. Ai está o vídeo do robô, mostrando alguns movimentos básicos e o sistema de feedback para ler a posição dos servos, que posteriormente será usado para que a pessoa possa ensinar o robô a se mover, facilitando a execução de movimentos mais complexos... Seria bom se fosse motor de passo daí daria para fazer movimentos mais suaves com aceleração, desaceleração e sem jitter... Posta fotos do seu projeto CNC/3D Printer ai Paulão @aphawk...
  2. Sim @aphawk , a do link não serve... Mas se eu fosse usinar somente plásticos, MDF, e PCBs, eu acho que eu compraria uma desta, se eu quisesse comprar completa, mas acho que prefiro que ela não venha com os drivers motores e tal, dai você pode escolher um mais forte ou mais fraco de acordo com o que você quiser fazer... A ideal para mim, no mundo perfeito, seria esta; Com motores Nema 23 com 425oz.in; Spindle AC 800W; Inversor de frequência WEG ; Sistema de refrigeração a água radiador, bomba; Os drivers seriam TB6600, compraria um pronto e realizaria algumas modificações; Controlador Arduino; Para o controle PID de velocidade do spindle, monitoramento de temperatura, etc. um PIC ou um AVR; Também construiria um sistema para aspiração do pó. (a parte da montagem, quebrar cabeça e tal, é a parte que eu mais gosto =D) Mas como o @Intrudera6 disse:
  3. @Intrudera6 Estou querendo terminar ele logo, a interface será com o labVIEW tenho ele meio que na mente, comunicação, verificação de erro (CRC) ... mas vou ter que aguardar um pouco ... @aphawk Show, mas Paulão, não seria melhor comprar uma cnc pronta? Tipo, já que é só placa de circuito impresso a CNC pode ser menos rígida, olha ai (você pode usar aquele tal de autoleveling que ai fica show): Review: Vendendo na gear best, mas você acho no Aliexpress e Ebay: http://www./3d-printers--3d-printer-kits/pp_356128.html?lkid=10419417 Eu estou querendo uma para criar umas bugigangas em aluminio faí a CNC deve ser mais rígida e um monte de problema começa a aparecer HEHE...
  4. @aphawk Opa, voltou em , show de bola... Ele até se move mas o software para controle ainda não está pronto, estou pensando na melhor forma de desenvolvê-lo, porém esse desenvolvimento será bem devagarzinho estou meio que em uma situação estranha hehe, capaz que eu tenha que postergar bastante esse projetinho ... Depois posto o vídeo dele fazendo alguns movimentos! Muito bom ver você de volta!!!
  5. Sim, porém o código exemplo usa o printf(); Apenas corrigindo o que eu disse; Mesmo usando um driver full duplex (como o MAX488) será necessário que o escravo acione a transmissão (DI = 1) e assim que terminar de transmitir ele terá que desativá-la (DI = 0)...
  6. A eeprom demora para gravar dados, para ler ela é como qualquer outro dispositivo i2c...
  7. Aqui está o código exemplo (CCS 5.046 - Proteus 8.2). https://www.4shared.com/rar/Wp72oX-tba/RS485_PIC_CCS_5046_PROTEUS_802.html? Obs: Não use este código no seu projeto aprenda com ele e crie o seu... Este código possui várias falhas, não usa buffer de recepção e transmissão serial, não usa interrupções, o PIC fica parado esperando os dados terminarem de ser enviados, usa-se delays desnecessários, não há verificação de erro (CRC), não há time out, etc. está cheio de problemas (criei na correria) serve apenas como um ponta pé inicial. Obs 2: Se você usar um driver full duplex você eliminará a necessidade de selecionar entre os modos de transmissão e recepção.
  8. Uma solução seria usar alguns MAX485/487/outro (half duplex) 488/490 (full duplex) daí você faz um esquema para que todas as mensagem que forem enviadas pelo mestre comecem com o endereço do escravo, todos os escravos recebem a mensagem mas apenas o escravo dono do endereço responde. O mestre também deverá ter um endereço pois quando um escravo responder a mensagem do mestre os outros escravos também receberão a mensagem. Esquema básico: Outra possibilidade seria usar um i2c bus estender P82B715 ou P82B96 mas se não me engano o máximo que eles estendem o barramento é 50m. Existem PICs com várias portas seriais (como o PIC24FJ64GA406), neste caso você poderia usar uma para cada escravo... Se você pedir amostras a Microchip te enviará. Se bem que pela distância tem que ser 485 mesmo =(
  9. [edit] Removido a resposta pronta http://www.microcontrollerboard.com/pic-timer0-tutorial.html Joque os vários valores de prescaler na fórmula que você achará um que gerará exatamente uma contagem de 204,8us.
  10. huHAuHAhahHAHHAh, se for pra pagar quem deve ganhar é o Kirit Chatterjee eu não fiz coisa alguma, apenas reproduzi o que ele postou =D... Bacana, eu também penso em usar este filtro em um CLP pra resolver um problema...
  11. Resolvi criar um código para calcular o CRC de 8 bits usando uma lookup table. funcionou, depois eu posto aqui...
  12. Terminei os testes com o filtro, é muito bom mesmo, eu deveria ter montado um antes =D... Os gráficos mostram a leitura de um LM35, sem média e sem capacitor na entrada analógica, apenas uma leitura e ela passa pelo filtro. A matemática do filtro está sendo feita no AVR a conversão para temperatura está sendo feita no LabVIEW. Se a pessoa possuir o Matlab da para discretizar a função informando a taxa de amostragem e a frequência de corte, ai fica show. Download (Código, Interface, Esquema): Arquivos para teste usando o LM35 Arquivos para teste usando o potenciômetro Gráficos: Beta = 0,009; Taxa de atualização = 30ms Beta = 0,01; Taxa de atualização = 50ms Beta = 0,045; Taxa de atualização = 50ms (Filtro já começa a deixar passar alguma coisa) Beta = 0,065; Taxa de atualização = 50ms
  13. Não sei se ele gera esse tal de Gerber aí, mas existe o easyeda dá pra usar ele online: http://easyeda.com
  14. O ATmega328P não reconhece os dados correntanmente quando o baud da comunicação serial está configurado para 115200. No teste abaixo eu enviei 0 1 2 3 4 5 6 7 8 9 para a serial, sendo que a primeira sequencia estava com o conversor USB<>Serial da placa do Arduino e a segunda com um FT232RL. A velocidade máxima que não apresenta erro é 57600. Se enviar repetidas vezes o caractere 0 'zero' o símbolo que aparece será o mesmo... Mesmo estando errado o erro é sempre o mesmo. Então eu achei que o erro estava no conversor USB<>Serial da placa do Arduino. Resolvi remover o ATmega328P da placa e fazer o teste de loopback diretamente no conversor USB<>serial da placa Assim os dados foram e voltaram corretamente não houve erro algum, então quer dizer que se o ATmega328P estiver conectado acontece algum problema. Alguém ai sabe o porquê disso acontecer? Será que é por causa do resistor de 1KR nas linhas TX e RX?
  15. Talvez um screwshield ou um protoshield o ajude:
  16. Ai está o gráfico, o código foi implementado no BASCOM mas faz a mesma coisa que o código acima faz inclusive o beta está com o valor de 0,025 a taxa de atualização é 50ms. Amanhã eu termino a interface, faço mais testes e postos o código, esquemático e interface labview... A entrada analógica do ATmega328P foi conectada a um potenciômetro. Plot 0 = Leitura antes do filtro plot 1 = Leitura depois do filtro região de visualização = 200 amostras Tempo visualizado = 10 segundos
  17. int leitura_antes_filtragem; float leitura_apos_filtragem; float filtro_passa_baixa_beta = 0.025; // 0<ß<1 void main (void) { while(1) { // Realiza a leitura analógica do canal 0 leitura_antes_filtragem = read_adc(0); // Realiza a filtragem da leitura leitura_apos_filtragem = leitura_apos_filtragem - (filtro_passa_baixa_beta * (leitura_apos_filtragem - leitura_antes_filtragem)); // Agora a variável "leitura_apos_filtragem" contém o valor filtrado. } } Funcionamento: Vamos supor que o sistema está estável e o último valor lido foi 1000. leitura_apos_filtragem = 1000 Sendo que a próxima leitura teve o valor de 970. leitura_antes_filtragem = 970 O novo valor da leitura filtrada para um beta de 0,025 (resposta muito suavizada) será: leitura_apos_filtragem = 1000 - [0.025 * (1000 - 970)] leitura_apos_filtragem = 999,25 Esse valor só será alterado na próxima leitura analógica (a frequência com que as leituras ocorrem influencia no filtro). Suponhamos que a próxima leitura (que pode ter ocorrido após 200ms ou 2s ou 10s) foi de 950. leitura_antes_filtragem = 950 O novo valor da leitura filtrada será: leitura_apos_filtragem = 999.25 - [0.025 * (999.25 - 950)] leitura_apos_filtragem = 998,02 Assim o beta deve ser ajustado de acordo com a frequência das leituras e o sinal analógico em si... Vou ver se levanto alguns gráficos aqui, pena que não tenho o "Labview Interface For Arduino" instalado seria uma mão na roda... Depois posto os gráficos aqui.
  18. Você quer filtro digital né? Eu estou meio que querendo usar um também, olha isso: https://kiritchatterjee.wordpress.com/2014/11/10/a-simple-digital-low-pass-filter-in-c/ Depois vou tentar usar e ver o resultado, para ficar mais rápido há uma alternativa, no link acima, que não usa variáveis float. LPF_Beta serve para "amaciar" a saída. int RawData; float SmoothData; float LPF_Beta = 0.025; // 0<ß<1 void main (void){ // LPF: Y(n) = (1-ß)*Y(n-1) + (ß*X(n))) = Y(n-1) - (ß*(Y(n-1)-X(n))); while(1){ // Function that brings Fresh Data into RawData RawData = GetRawData(); SmoothData = SmoothData - (LPF_Beta * (SmoothData - RawData)); } }
  19. Coloca a frequencia de corte e o valor do capacitor que ele te dará o valor da resistencia e os demais dados "Calculate the R and C values for the filter at a given frequency": http://sim.okawa-denshi.jp/en/CRlowkeisan.htm
  20. Problema com o Proto Shield (Prototype Shield) e USBasp Estava com problemas ao tentar usar o USBaso conectado ao Prototype Shield para o Arduíno Mega, quando eu o usava conectado diretamente ao Arduíno ele funcionava normalmente mas quando eu tentava us-alo conectado ao Prototype Shield ele não conseguia se comunicar com o ATmega2560: Apertando o botão de RESET (mantendo o ATMega resetado manualmente) o USBasp conseguia se comunicar normalmente, ao medir a tensão do pino RESET percebi que ela ia para 2,6~3,2V quando o USBasp tentava se comunicar, essa tensão não é suficientemente baixa para colocar o ATmega2560 em reset para o programador poder se comunicar com ele. Depois de tentar várias coisas (Remover capacitores da linha de RESET, cortar o pad RESET EN do Arduíno) resolvi meio que fazer uma engenharia reversa da linha de RESET: O Proto Shield possui um resistor de 150R que acaba ficando em paralelo com o resistor de 10KR da placa do Arduíno (150||10K = 147.8); e esse conjunto fica em série com o resistor de 120R do USBasp... Daí quando o USBasp colocava 0 (zero) em seu pino de RESET para colocar o ATmega em RESET a tensão cai apenas para ~2,76V. Para solucionar o problema basta remover o resistor de 150R do Prototype Shield: Assim o problema é solucionado e a tensão de RESET começa a ir a zero. ATmega2560 detectado:
  21. Já conseguiu? Você colocou o chip atmega puro no Proteus? Se sim você deve setar os fuses de acordo com os do Arduino, principalmente o bootrst (ou algo do tipo), clksel, 16MHz... No PIC você colocava só o clock e os fuses am junto com o hex/cof... Você também pode usar a plaquinha ponta no Proteus, como mostra este site: http://microcontrolandos.blogspot.com.br/2014/10/arduino-uno-para-proteus.html?m=1
  22. Melhoras ai Paulão õ/
  23. Dando continuidade ao Robô xD... Aqui está o Protoshield com os amplificadores operacionais para as tensões de feedback dos servos, Zenner para tensão de referência, Buzzer, botão para pânico e o FT232. Não ficou tão bonito mas ao menos está funcional =D Aqui está o Gripper do robô montado, para pegar objetos usando sucção. Daqui a pouco chega na parte da programação hehe, a placa de controle faz praticamente tudo (eu ia criar uma, mas quando vi que já havia uma que fazia tudo que eu queria resolvi pegar uma pronta). O trabalho será só criar modos de execução do robô, como movimentos por ensinamento (ensinar ele a se mover com a mão), comando através da interface, controlar usando acelerômetro (talvez) e por ai vai.
  24. Valeu ai @ViniciusKruz Esqueci de falar... Eu removi o resistor que está em série com o diodo pois a bateria que estou usando é a CR2032 (não recarregável), mesmo assim acho que a qualidade desse carregar (conjunto diodo + resistor) é duvidosa . Outra coisa, a frequência do pino SQW não muda no meu DS3231, não consegui entender o porquê só fica em 1Hz... Escrevo no Control Register e depois leio ele para garantir que foi escrito corretamente mas mesmo assim a frequência não muda ...
  25. Essa é uma biblioteca que fiz para o DS3231, o bacana desse RTC é que ele possui oscilador interno e faz o ajuste do mesmo automaticamente de acordo com a temperatura (que pode ser lida pelo usuário), o que o torna mais preciso. Além disso ele possui 2 alarmes. Porém ele não possui RAM disponível para uso geral como o DS1307 possui xD. Código para demonstrar o uso da biblioteca: Biblioteca (ds3231.c):

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