Ir ao conteúdo
  • Cadastre-se

.if

Membro VIP
  • Posts

    15.282
  • Cadastrado em

Tudo que .if postou

  1. 92 agora. #include <pic.h> __CONFIG(CP_OFF & MCLRE_OFF & FOSC_INTOSCIO & PWRTE_ON & WDTE_OFF & BOREN_ON); //*************************************************** unsigned char const port[7]= { 0b000, 0b010, 0b001, 0b100, 0b010, 0b100, 0b001 }; //.................................................... unsigned char const tris[7]= { 0b000, 0b100, 0b100, 0b001, 0b001, 0b010, 0b010 }; //*************************************************** unsigned char adc_read(unsigned char channel) { ADCON0 = (channel << 2) | 0x03; // res. 8 bits em ADRESH enable ADC, fosc/32 , referência=vdd while(GO_DONE); return ADRESH; } //*************************************************** void main() { unsigned char i; OPTION_REG = 0b10000000 ; //pullup disable CMCON0 = 0b111 ;//tudo digital ANSEL = 0b01101000;//fosc/64, GPIO3=entrada analógica TRISIO = 0b11000;//GPIO4=entrada analógica for(;;) { i=adc_read(3)/42; TRISIO=tris[i]|0b00010000; //GPIO4=entrada analógica GPIO=port[i]; } } Coloquei um gerador de sinal como firula... (já já retorno Vídeo...) Me cadastrei no vimeo pro Vídeo ficar incorporado no post Pra este caso... ...com o hw acima, de fato precisamos de... período qualquer. Veja que há leds em antiparalelo, neste caso jamais acenderiam simultaneamente. Além de aumentar pra 12 leds (pow Paul.. ninguém quis bolar a tabela pra nós) não deixa de ser um acréscimo desafiador já que pra um mc de mais pinos é sem graça pois fica fácil d+
  2. https://i.imgur.com/5poG925.mp4 #include <pic.h> __CONFIG(CP_OFF & MCLRE_OFF & FOSC_INTOSCIO & PWRTE_ON & WDTE_OFF & BOREN_ON); //*************************************************** unsigned char const port[7]= { 0b000, 0b010, 0b001, 0b100, 0b010, 0b100, 0b001 }; //.................................................... unsigned char const tris[7]= { 0b000, 0b100, 0b100, 0b001, 0b001, 0b010, 0b010 }; //*************************************************** void delay(unsigned int dl) { while(dl--); } unsigned int adc_read(unsigned char channel) { ADCON0 = (channel << 2) | 0x83; // enable ADC, fosc/32 , referência=vdd while(GO_DONE); // continue; // wait for conversion complete return ADRESH*256 + ADRESL; } //*************************************************** void main() { unsigned char i; OPTION_REG = 0b10000000 ; //pullup disable CMCON0 = 0b111 ;//dis comparador ANSEL = 0b01101000;// TRISIO = 0b11000;//GPIO4=entrada analógica for(;;) { i=adc_read(3)/165; if (i>6) i=0; //nem precisa.. só por segurança TRISIO=tris[i]|0b00010000; GPIO=port[i]; //delay(20000); } } Ocupou 124 bytes de flash mas acho que dá pra reduzir. Quero usar 4 saídas pra 12 leds mas to com preguiça de bolar a tabela... Bola aí pra mim...Baseia nisso daqui ó...
  3. De aprender eu não sei... mas de ensinar... Vejamos... No caso acima não precisa de interrupção. Afinal os dados ou bits ou estado de saída ficam parados. Aquela ideia foi mesmo pra maximizar estados mostráveis - no caso - nos leds. O detalhe - que alguém bem que poderia achar curioso - é que entra em cena um terceiro estado lógico já que você - caro amigo recem chegado no ramo - aprendeu na teoria que em binário só existem 0 e 1. Na prática acrescentamos mais um que tem sua glória: ele se chama tristate ou alta impedância ou simplesmente desconectado. No caso daquele mc ele se torna uma "entrada" sob o controle do registrador TRIS. No caso do ex. do meu post sua utilidade está quase bem explícita sua função Z. Qualquer momento eu testo numa simulação. No caso de Paulão é pra quando se precisa de muitas saídas ou leds - p.ex. prum display matricial. Tem um exemplo que publiquei há muitos (e muitos) anos que usava vários 74HC595 pra escrever textos em vários displays matriciais que levava o conceito que menciona o amigo de uma multiplexação a um nível ligeiramente elevado. Modéstia a parte, foi criação 100% original. Preguiça de procurar mas a qualquer momento se achar que devo, linko-o. Falando nisso... Algo como... unsigned char a,tmp; for(;;) { tmp=0; a=adc_read(0)/128; while (a--) tmp|=1<<a; PORTB=tmp; } Tem algo pra dar certo... Testei o conceito unsigned char a,tmp; int main() { a=8; while (a--) tmp|=1<<a; while (tmp) {if (tmp&1) printf("1");tmp>>=1;} return 0; } em... https://www.onlinegdb.com/online_c_compiler Médio... muita decisão pro mc tomar... E se forem p.ex. 48 leds?
  4. O correto é mesmo um ... Se não tiver pode tentar com uma fita veda rosca no parafusinho.
  5. Olá amigo. A posição do ci... ...está errada. Ele é DIP18 portanto o pino 1 dele... ... deve ficar no pino 29 do zif. Tentaí e me conta... Ah e também tem a questão dos jumpers... vai ter que dar uma lida no manual ...
  6. São apenas pra fixar ou são pra ajuste? Tem algo como uma molinha neles? Se for só fixação, cogite adaptar um autoatarrachante de espessura similar.. meio que vai arrombar a rosquinha mas deve travar. Off me fez lembrar.. um dos prerrequisitos pra ser 'o cara' da época era ter um tocafitas autorreverse no carro. Era o bixão mano...
  7. Minha visão de sherlock holmes me mostra nesta foto ...somado à afirmação... que foi questão de mau contato no aparafusamento frouxo e/ou oxidações. Um mau contato aparece quando quer e provoca uma resistência de aquecimento. Geralmente é obediente à lei de murphy algo como vai se manifestar num dia mais frio e quando você está já em baixo do chuveiro.
  8. Metendo a colher na vossa sopa, uma alternativa a este ci é um mc quase tão ou mais barato que ele. O barato é que surge a oportunidade pra um ligeiro aumento de sabedoria no ramo co-irmão da eletrônica: a programação. Teorizei algo como... Como alguns amigos sabem, gosto de desafios (mas não sabem que tenho alguns pic16f683), talvez eu faça algo do tipo com ele e vá colocar lenha na fogueira pra entornar o caldo de vez Teoricamente com 1 entrada analógica e 4 saídas, dá um barrgraph de 12 leds... Mas sei lá... pelo menos fica aí mais uma semente ..
  9. Só pra registro... Desconsidere o fonte acima... Descobri que a senoide está sendo formada pelo hw e não necessariamente pelo sw. Além de possuir um erro na indexação. Não vou apagar/editar só pra efeito de histórico ok? Num futuro [ainda incerto] dou mais uma revisada... se achar que devo.
  10. ... pra este seu caso - de apenas recolocação - não parece ser o caso necessário pois deduzo que não perdeu nenhum. Além do+ você nem saberia o valor das peças 'grão de areia' que pode ser resistor ou indutor. ... e de uma jovem e boa visão
  11. Sim pode ser a fonte a fonte do problema. Publique Vídeo dele... ou troque pela tensão correta e retorne o resultado.
  12. Amigo esta deve ser a temperatura interna das junções durante seu funcionamento. Já que a temperatura de um forno de refusão (clique) chega a 350ºC e a placa leva minutos pra passar por ele. Outra dificuldade adicional que o autor pode ter é que a placa dissipar (diminui) o calor o que pode dificultar a correta adesão. Por isso recomendo +1 vez: pratique. "Hábitos: no começo são teias de aranha. Com o tempo se tornam fios de arame". (filosofia chinesa)
  13. Supositóriamente troquemos o título para "Como soltar..." Acho que aquele componente é pequeno d+ pra uma pinça estação de solda ... (clique) Carinho... investir nisso.. só mesmo pra quem é do ramo... mas como achei bem legal, senti vontade registrar...
  14. Boa... nem considerei isso. Mas acho que o tal startjumper não tem energia suficiente pra muitos minutos . Ideota: coloque um reboque com a bateria maior .. tipo carretinha.. o problema é ensinar o treco a manobrar de ré... Em tempo. eu só faço baliza em vaga onde caberia uma carreta
  15. Pelo exposto, o principal perrengue é mesmo a bateria que de fato parece não possuir bms. Não sei se o peso é d+ mas uma alternativa é colocar uma quase barata bateria 12v de nobreak colada com cola quente em cima do bicho. Já a rodinha você faz até com cabo de vassoura. Se algum dia for desapegar, mo ofereça pra venda. A ideia é adaptar rodonas pra fazer um irrigador semiinteligente pra "varrer" meu gramadinho... algo como um caminhaozinho pipa ...
  16. Um pouco de magia lhe cairia bem. Mas como poucos têm acesso à ela, o que você pode fazer - não necessariamente nesta ordem - é: -possuir um bom soldador de ponta fina. Geralmente o de estação de solda é. -uma boa lupa ou até mesmo seu celular pra te guiar -um pouco de habilidade adquirida com treinamentos -não estar alcoolizado -não tremer -ter paciência/dedicação/motivação Aquecer demais pode soltar ou evaporar a ilha. De menos pode não soldar direito Com ar quente da estação até que dá mas aconselho a proteger as outras peças com fita de alta temperatura ou similar. Além do que há o risco de soprar outras peças pra outra dimensão. Aumente o nível do item 3 antes.
  17. Voltemos um pouco ao monitoramento do peso. Aperte o cinto pois lá vamos em +1 viagem mental... Existe máquina de lavar de vários Kg diferentes. Por acaso você pesa a roupa antes de colocar na máquina? Quem em sã consciência pesaria 10 ou 11kg - já vi dos 2 tipos - pra não sobrecarregar a máquina? Pois bem, imagine agora que você apresentou o protótipo na sua feira de tcc e conseguiu convencer os acionistas as brastemp e consul que tal pesagem é interessante, agrega valor, a um custo tão baixo que se repassar pro consumidor ele nem vai perceber. Pronto: já pode se ver milionário. Imagine o sistema minimalista ao extremo algo como um (01) led bicolor: apagado=sem peso, verde=tudo bem, pode por mais roupa, laranja (ou vermelho e verde acessos)=suficiente, e vermelho: tire a roupa. Nada contra você colocar + leds (clique) mas geralmente empresas torcem o nariz pra investimentos maiores. Na chegada da estação mental, se você conseguir reduzir o custo do sistema com sensor de vibração, eu permito que você aplique não só no setor industrial mas em virtualmente em todos os ramos... doméstico, automotivo, aviação, ferroviário, ... todos que possuem sistemas críticos sofríveis por desgastes. Agora sim, pode descansar sua mente na sua ilha recém comprada
  18. Uma coisa que pode virar produto de verdade e de fato ganhar uma boa grana são sensores pro setor industrial pra uso nas máquinas. Temperatura, corrente, tensão --- puff!--- e etc são fáceis demais e nem merecem comentários mas sim podem ser incorporadas neste daqui ó: Sensor de vibração. Essencialmente um acelerômetro colocado no motor ou em algum lugar estratégico. Ele fica lá a vida toda desde a montagem zero do sistema mecânico. O sistema registra o valor da vibração momento zero e vai monitorando durante a vida. Ao atingir determinado valor, avisa o setor de manutenção para averiguar/trocar e etc alguma peça p.ex. se há algum desbalanceamento, desgastes e etc. Serve tanto pra manutenção corretiva como preventiva. Para teste conceitual mental, imagine um no seu ventilador. Se novo ele vai fazer barulho zero. Alguns meses de uso ele já ficar irritante. Esta irritação é que o sensor acima vai captar e informar. Obviamente pra negócios isso não é "coisa pra criança" mas como tcc até que é bem bacana e quase bem fácil de fazer com um sensor de vibração
  19. Este Vídeo https://i.imgur.com/fzhdqSn.mp4 foi feito a partir deste fonte: #include <ioavr.h> #define B8__(x) ((x&0x0000000fLU)?1:0) \ +((x&0x000000f0LU)?2:0) \ +((x&0x00000f00LU)?4:0) \ +((x&0x0000f000LU)?8:0) \ +((x&0x000f0000LU)?16:0) \ +((x&0x00f00000LU)?32:0) \ +((x&0x0f000000LU)?64:0) \ +((x&0xf0000000LU)?128:0) #define HEX__(n) 0x##n##LU #define b8(d) ((unsigned char)B8__(HEX__(d))) /* for upto 16-bit binary constants, MSB first */ #define b16(dmsb,dlsb) (((unsigned short)b8(dmsb)<< \ + b8(dlsb)) /* for upto 32-bit binary constants, MSB first */ #define b32(dmsb,db2,db3,dlsb) (((unsigned long)b8(dmsb)<<24) \ + ((unsigned long)b8(db2)<<16) \ + ((unsigned long)b8(db3)<< \ + b8(dlsb)) /* Sample usage: b8(01010101) = 85 b16(10101010,01010101) = 43605 b32(10000000,11111111,10101010,01010101) = 2164238933 */ #define SinDivisions 32 //200 #define microMHz 16 #define freq 60 #define period microMHz*1e6/freq/SinDivisions unsigned int const tab_sen[]= { 0,349,694,1031,1356,1667,1960,2231,2478, 2697,2887,3046,3171,3261,3316,3334 }; unsigned char tmp; unsigned char num; unsigned char trig; unsigned char led; unsigned int a0; static unsigned char dtrig; float Vac; void setup() { TCCR1A = b8(10110010); TCCR1B = b8(00011001); TIMSK1 = b8(00000001); ICR1 = period; DDRB = b8(11111111);//tudo saída DDRC = b8(11111110);//PORTC0=entrada analógica DDRD = b8(11111111);//tudo saída ADCSRA=b8(10000111); //hab. adc, prescaler 128 ADMUX=b8(01000000); //ref=vcc asm("sei"); //hab. interrupção } #pragma vector = TIMER1_OVF_vect __interrupt void basic_timer(void) { tmp=num; //1º quadrante de 0 a 90º if (num>=16) tmp=16-num;//2º if (num>=32) tmp=num-32;//3º if (num>=48) tmp=48-num;//4º OCR1A=OCR1B=tab_sen[tmp]; //alimenta hw com seno if (num==31)//sincronia com o loop { if (trig++>15) {trig=0;PORTB_Bit5^=1;}//led tô vivo em PB5 } if (num==16) dtrig=0xff; if (num++>63) num=0;//fim da tabela } unsigned int analogRead(unsigned char ch) { unsigned int result; ADMUX=b8(01000000)|ch; // delay_ms needed for the stabilization of the ADC input voltage ch=20; //aproveita variável pra dar um atraso while(ch--);// asm("NOP"); // Start the AD conversion //ADCSRA|=b8(01000000); ou ADCSRA_Bit6=1; ou... ADCSRA_ADSC=1; // Wait for the AD conversion to complete //while (ADCSRA&b8(01000000)) ou while(ADCSRA_Bit6); ou.. while(ADCSRA_ADSC);// asm("NOP"); result=ADCL; //o hw do mc exige que se capture ADCL primeiro result+=(unsigned int)ADCH*256; return result;//ADCL+ADCH*256; } void main(void) { setup(); for(;;) { while(dtrig==0);// asm("NOP");// sinc. com interrupt a0=analogRead(0); //captura logo após atingir Vp PORTD_Bit7=1; //só pra mostrar o momento da captura PORTD_Bit7=0;//no osciloscópio dtrig=0; //aguardar momento Vp //Serial.print("Ad="); //Serial.print(a0); //Vac=((float)a0*0.03447); //Serial.print(" Vac="); //Serial.println(Vac); } } Extremamente minimalista: não precisei fazer 'adaptação técnica' - funcionou como manda o figurino da linguagem - , ocupou 560 bytes em contraste aos 4K do arduino. Perceba que apenas 16 senos em cada quadrante já compõem a onda senoidal pura. Como se repetem, o pulo do gato [original] foi indexá-los de acordo com sua posição. Vide comentários no fonte. Também este compilador não possui notação binária 0b1010101.. Não contava com a astúcia de algum "sem noção" mas com muita noção e tempo que criou aquelas intricadas e inexplicáveis macros b8(1010101) pra nós. Perceba a variação da senoide em função da carga bem como os valores ADCH e ADCL lidos na janela watch. Próximo desafio é usá-los pra fazer a correção da Vac. De novo, a ideia é que a correção pela realimentação seja tão mais raṕida possível que se aproxime do ... do França. A propósito, bem bacana este módulo. Não preciso mas senti muita vontade comprar um
  20. Eu nem ia participar mas senti vontade registrar isso: Eu admiro d+ o povo africano que mesmo com necessidades extremas ainda conseguem fazer coisas incríveis. Chorei mesmo ao assistir o filme https://negre.com.br/o-menino-que-descobriu-o-vento-um-drama-biografico/ Também já os vi fazendo esculturas, máquinas e bicicletas de madeira e etc e com zero recursos tecnológicos. Apenas com vontade, imaginação, criatividade, motivação e etc disponíveis Bem, nesta linha de pensamento, e meio que voltando ao título do tópico, idealizei um sensor de peso com duas "moedas" com um dielétrico emborrachado formando um capacitor. Pressionando as "moedas", há aproximação o que altera a capacitância e se esta fizer parte de um oscilador ou simples carga descarga, pode ser usada como sensor pra balança. Outra ideota: certa feita medi a R de uma esponja antiestática - ou espuma, esponja condutiva e afins. Ao pressionar a R caía. Teorizei comparadores formando um bargraph com leds .. E existem outras ideias (minhas) como p.ex. um potenciômetro seguro por uma mola com uma haste que o movimenta pelo peso, e um monte de etc conceituais... nunca montei nada disso. Lembrando que a ideia não é medir o peso com precisão extrema. A ideia é ter noção visual da força da pressão sendo feita no sensor. Bem.. já que o moleque desistiu, vou deixar estas ideias/sementes pra alguém do povo supracitado. Alguém que não tem como adquirir a tal célula de carga tampouco arduinos e cia mas está cheio de vontade/motivações/hormônios técnicos e etc e tem algum tipo de acesso a peças sucateadas. Pena que não somos "vizinhos" senão lhe daria algo mais que ideias pois possuo muitas peças eletroeletrônicas e mecânicas compartilháveis. Boa sorte ao autor e sucessos a você, caro amigo africano presente neste forum.
  21. O google deve te iluminar bem mais (clique) do que esta velha carcaça que vos escreve. O que talvez ele não diga é que você pode usar a IDE arduina com um esp32. Com ele você pode ter o diferencial de enviar dados pra rede wifi ou bluetooth e avaliar os dados p.ex. num smartphone ou pc. O legal é que te envolve você e sua equipe na tal IOT que é uma tendência do momento pra ajudar a emergente IA a dominar o mundo
  22. @MOR_AL Num 1º momento usei calculadora mesmo mas esta calculadora https://www.omnicalculator.com/pt/fisica/calculadora-frequência-de-ressonancia dá resultados diferentes do seu mas bem semelhante ao meu lá de trás. De fato estou usando 60Hz mesmo. ..sim mas são resistências da bobina mesmo ok? No caso o default do simulador é 1mR mesmo. .. distorce a onda. O que mais deixou senoide foi o 0.5 mesmo. O simulador com mosfet fica muuuiito lento e as vezes instável.. dá algum tipo de erro e pára. Vou parar de usar ele com mosfet e fazer testes de realimentação com trafo direto no pino do mc cuja simulação é bem rápida. Em breve faço teste real pra saber - já que ninguém me iluminou - se trafo comum dá resultado com com este spwm doidão aí... Meu indutímetro sumiu. Vou ter que usar gerador de sinais + osc pra calcular o C ressonante
  23. Dica: meça cada uma delas - se isoladas: cada par de fio - e faça uma fonte de valor fixo pra cada. Vai ser uma multifonte diferentona e legal até. Agora escolha a maior e adapte um regulador step down pra fazer uma fonte ajustável/variável. Me lembro vagamente que o amigo Moris @MOR_AL fez isso agora há pouco e publicou aqui. Se ele achar que deve, poderá linkar-lhe sua publicação.
  24. @MOR_AL e eu ainda menos .. Refiz a conta da ressonância mas deixei em 60Hz mesmo. C=116uF com seus mH. Agora até que quase deu igual ao do real do França...Tive que aumentar o R shunt pra 10mR pro osc captar. E pra aparecer as ondas abaixo tive que intuir um fator de acoplamento 0.5 (o tal M). Apesar do nome sugestivo, como não sou do ramo não sei exatamente o que significa. RP e RS são a R em mR. com zoom... Meio que tentou aparecer a senoide mas pelo menos mostrou os dentes ... amarelos. Na IDE arduina o código ocupou + de 3K - sem o tal bootloader - além de não funcionar a contento alimentando os dados de seno direto da flash e etc. Já num compilador de verdade ocupou 600B e, claro, lê da flash de boa. Mas pra tornar o projeto open source acho que vou ter que retornar ao arduino mesmo... pensando... em fazer em ambos só pra efeito de benchmarking França.. agora sim vi a figura.

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