Ir ao conteúdo
  • Cadastre-se

Sérgio Lembo

Membro Pleno
  • Posts

    3.036
  • Cadastrado em

  • Última visita

Tudo que Sérgio Lembo postou

  1. O relé possui um mecanismo de gangorra onde a mola puxa para um lado e a bobina para outro. A maioria não suporta altas correntes embora hajam os automotivos bem robustos. A maioria tem dificuldade em desligar uma carga indutiva devido ao baixo curso mecânico dos contatos, o arco voltaico que se forma mantém a condução. Os contatores possuem montagem diferente. Possuem um bloco plástico onde ficam os contatos móveis e este bloco móvel está suspenso por uma mola e possui uma bobina de 1 espira em curto com a face para baixo. Quando a bobina AC que está instalado abaixo energiza a indução atrai a espira do bloco móvel e seus contatos. Para serviços mais pesados se utiliza com outras construções:
  2. Seja o que venha a usar terá um relé ou contator. Com o uso de um relé térmico poderá usar o contato normal aberto para acionar um alarme. É fazer a lista de demandas e partir para o desenho.
  3. Por ser contemporâneo do @aphawk Paulo vou tomar a liberdade de responder esta. Os computadores tinham saído a pouco dos grandes centros de pesquisa e grandes empresas, ficaram acessíveis através do TK80 e outros de 8 bits. Para gravar programas e dados usávamos fita cassete de som, quem tinha muita grana comprava as unidades de disquete. Nas máquinas de 8 bits reinava o Basic, a máquina já vinha com o interpretador nativo. Outras linguagens foram aparecendo, algumas pegaram outras não. Quem se acostumou não vai mudar enquanto estiver dando certo. No final todas, sem exceção, fazem a mesma coisa: tornar mais humana e fácil a dura linguagem de máquina. No meu primeiro contato tive que programar em hexa, as IDEs só vieram depois. Dureza ter um papel ao lado com os códigos e o hexa correspondente para fazer o programa. E isso porque tinha o apoio de um pesado IBM da empresa.
  4. Depende do módulo utilizado. O ESP32 pelo que sei consegue gerenciar até 4 conexões simultâneas. Os roteadores domésticos entre 12 e 16 conexões simultâneas.
  5. Ao contrário do disjuntor que desarma a si próprio o relé térmico desarma um par de contatos destinados ao controle. Esse contato é colocado em série com a bobina do contator. Outra característica interessante do relé térmico é de possuir um dial para ajuste da corrente. Como pose ser visto na imagem a entrada é desenhada para encaixar num contator.
  6. Disjuntor é um dispositivo que conecta e desarma por sobrecorrente numa só peça. Para o desarme por sobrecarga e controle externo se utiliza o par relé térmico + contator.
  7. Não, a histerese é formada pelo resistor de 22k e os 2 de 47k. A histerese como foi formada está pesada demais. De forma grosseira será necessário ser meia noite para a luz acender e meio dia para apagar. Um resistor de 1M já vai dar uma janela de 10%. Temos o problema da incidência da luz da lâmpada sobre o LDR que tende a desligar o sistema. Com o diodo adicionado toda vez que o led for acionado a ação do diodo mantém o sistema ligado. No curto intervalo onde o led está desligado a ação do diodo some, o LDR passa a ter o valor que indica a luz externa que entra no ambiente e só manterá a luz ligada quando houver necessidade.
  8. Sim, mas quem vai ligar o led ou laser?
  9. RA ou CRI define a qualidade de reprodução de cores. Com RA=80 tem-se uma boa reprodução das cores, RA=>90 é uma excelente reprodução de cores. RA=70 é uma reprodução de cores pobre mas aceitável em iluminação pública (ruas, calçadas, praças). Os leds de excelente razão lumens/watt costumam ser de RA=70. Os de excelente reprodução de cores além de mais caros tem menor eficiência energética. Para a leitura, que exige muito dos olhos, a temperatura de cor 4000K ou 3000K são as melhores, cansam menos a vista.
  10. Vi o link da fita pretendida. Eles até dizem que oferece uma qualidade de luz RA>90, muito estranho para RGB mas em se tratando dos chinas eles dizem qualquer coisa para vender, difícil diferenciar uns de outros.
  11. @.if Só estudei o DMA da ST não sei como trabalham os demais. Se temos um buffer a existência do ponteiro se faz necessária. No caso do DMA o ponteiro é interno ao DMA, não se tem acesso ao valor atual. O que o DMA disponibiliza são 2 flags: 1 para quando atinge a metade do buffer e a outra para buffer completo. São setadas por hw e resetadas por softer. O tamanho do buffer administrado pelo DMA pode ser de até 2^16 - 1. O exemplo inicial foi de um scope, leitura de ADC, serial seria o quê? USART, I2C ou SPI? Vamos supor que seja uma USART O controle da USART é o normal, o arroz com feijão de sempre. Normalmente as seriais simplesmente disponibilizam o byte lido e sinalizam numa flag podendo ou não disparar um EVENT ou INTERRUPT se setado para tal. O que muda é que os bytes recebidos (ou a enviar) serão colocados (ou lidos) num buffer. STM32F030 Manual de referência: RM0360 Quando a origem é maior que o destino os bytes excedentes mais altos são perdidos. Quando a origem é menor que o destino os bytes excedentes mais altos são preenchidos com zero. No nosso caso a USART trabalha com 8 bits então PSIZE=8 bits. Vamos usar então memória de 1 byte, MSIZE=8 bits. O DMA fará incremento de 1 byte a cada transferência. Sendo o ARM de 32 bits nada impede que os utilize na CPU carregando 4 bytes a cada vez com incremento de 4 no endereço. No caso específico da USART caso queira ler e escrever terá que utilizar 2 canais, um para leitura e outro para escrita ou apenas 1 caso seja unidirecional. Tem 1 registro de uso geral das flags + 1 registro também de uso geral utilizado para zerar flags e 1 registro de controle que deve ser programado Afora os 3 acima temos + 4 registros para cada canal em uso sendo que 2 contém os endereços do periférico e da memória e outros 2 as configurações tais como: tamanho da origem, tamanho do destino, se buffer circular ou não, tamanho do buffer, direção (memória -> periférico ou periférico -> memória). Não creio que vá usar buffer circular numa USART, seria muito irado e arriscado. Ao chegar ao fim do buffer não circular a transferência encerra sendo possível disparar interrupção para te avisar da condição. Para iniciar novo pacote vai ter que desligar o canal e religá-lo. Os parâmetros não são perdidos mas o canal fica pronto para mais uma rodada de transferência. Fazendo uma leitura rápida na USART parece que tem uns preparos nos registros dela para fazer DMA. Nunca usei USART, somente ADC e timer. Sobre a forma de programar tem aquela mais elegante onde se usa os nomes dos registradores e dos registros neles contido. Muito trabalhosa para o meu gosto. Prefiro definir o valor total do registrador e gravar a palavra completa. Para gravar o canal 1: jumper para pular os ADRs ADR endereço base do DMA + 8 ADR valor do registro 1 do canal 1 - - - - ADR valor do registro 4 do canal 1 ADR valor do registro DMA_CSELR LD R7, PC, -24 // lê o endereço relativo 6 words (4 bytes) antes do PC atual, refere-se à localização do endereço base do DMA e grava em R7. LDMIA R0-R5, R7 // baseado no endereço do primeiro ADR gravado em R7 lê os 6 ADRs da tabela e os grava de R0 a R5. Por serem 6 leituras a instrução de 16 bits gasta 6 ciclos, a cada ciclo R7 se post incrementa em 1 word (R7 = R7 + 4) STMIA R1-R4, R0// Baseado no endereço base do DMA gravado em R0 grava os 4 primeiros registradores que estão em sequência. Por serem 4 gravações a instrução de 16 bits gasta 4 ciclos, a cada ciclo R0 post incrementa em 1 word (R0 = R0 + 4) LD R1, R7 // lê o valor do registro DMA_CSELR endereçado por R7 e grava em R1 ST R0 , R1, 90 // grava o valor contido em R1 no endereço R0 + 90 Para controlar o DMA use os 2 primeiros registradores.
  12. @aphawk Paulo Na verdade costumam se ADCs de 12 bits e aí se reservam 2 bytes (16 bits). Sobre o circular, basta implementar a tabela e informar ao canal do ADM que deve trabalhar de forma circular, ele gerencia para ti, não precisa implementar código, não ocupa tempo da CPU.
  13. @aphawk Paulo, não se esqueça do DMA. Para quem necessita fazer scan de ADC em várias entradas o DMA é uma mão na roda. Basta programá-lo para para colocar os resultados num buffer circular. Exemplo para os iniciantes (não é o seu caso): 3 pontos de leitura analógica fazer uma tabela de 16 bits por 3 posições programar o canal de DMA referente ao ADC para colocar a leitura das 3 entradas na tabela de forma circular. programar o ADC para fazer scan das 3 entradas OBS: essas instruções devem ser feitas no início do programa, não farão parte do loop de controle, só tomarão tempo da CPU uma única vez. No decorrer do programa simplesmente ler a posição correspondente, muito mais simples e rápido (apenas 1 instrução) do que fazer o read() que é simples no ato de escrever em C ou Bascom mas que torna o programa extenso e lerdo (indicar ao ADC o canal a ser lido, fazer o start da leitura, monitorar e aguardar a flag que indica a finalização da leitura para só então conseguir fazer a leitura desejada). É o hardware aliviando o trabalho da CPU.
  14. Estou elaborando um projeto com ARM da ST com display 16x2. Por questão de custo vou usar os pinos de boot e os de programação como saída para o D0-D3 do display. Um resistor de alto valor fará o set do boot. No momento de transferir a programação não haverá problemas de conflito com o hw externo. Existem soquetes para SMD, um pouco caros.
  15. 80W num ambiente pequeno? 15W já ilumina muito bem um ambiente inteiro de até 20m². Como o projeto se destina a fazer iluminação decorativa nas prateleiras e funcional na mesa inferior pense numa fita com menos potência por metro. Fita RGB é de decoração, para leitura a qualidade de cor é uma porcaria. Não a considero adequada para a mesa mas a maior parte das pessoas desconhece essa parte técnica, a possibilidade RGB é mais fácil de vender, admito.
  16. A coisa ficou num nível onde se entrega mais processamento e recursos de periféricos pelo mesmo custo. Entre um AVR de 8 bits e um ARM 32 bits que custa até um pouco menos a escolha é simples. Faz lembrar o destino dos discos de DVD com o aparecimento dos pen drives e sua queda de preço.
  17. Com certeza vai querer utilizar o STM na sua aplicação. Para as temporizações do programa tais como delay o compilador vai utilizar o Systick da CPU ARM. Todos os outros 5 timers de 16 bits ficam à sua disposição. TIM1 e TIM3 possuem um conjunto de registradores bem interessantes. Usando um único pino de entrada (vai ter 8 para escolher, 4 no TIM1 e 4 no TIM3) o hardware vai fazer a leitura de duração do pulso para ti sem interferência da CPU e toda vez que desejar saber a rotação bastará ler o capture utilizado. O código abaixo deve ser colocado na inicialização do programa, fora do loop de controle. Basicamente o que se faz é: a cada pulso o valor é capturado e o timer resetado. Desta forma a qualquer momento bastará ler o capture utilizado para saber a duração do período. No exemplo abaixo captura o período e o duty. PWM input configuration code example /* (1) Select the active input TI1 for TIMx_CCR1 (CC1S = 01), select the active input TI1 for TIMx_CCR2 (CC2S = 10) */ /* (2) Select TI1FP1 as valid trigger input (TS = 101) configure the slave mode in reset mode (SMS = 100) */ /* (3) Enable capture by setting CC1E and CC2E select the rising edge on CC1 and CC1N (CC1P = 0 and CC1NP = 0, reset value), select the falling edge on CC2 (CC2P = 1). */ /* (4) Enable interrupt on Capture/Compare 1 */ /* (5) Enable counter */ TIMx->CCMR1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1; /* (1)*/ TIMx->SMCR |= TIM_SMCR_TS_2 | TIM_SMCR_TS_0 | TIM_SMCR_SMS_2; /* (2) */ TIMx->CCER |= TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC2P; /* (3) */ TIMx->DIER |= TIM_DIER_CC1IE; /* (4) */ TIMx->CR1 |= TIM_CR1_CEN; /* (5) */ Uma correção: para ler o duty deverá configurar o canal 2 como capture, Tl1 como sinal de entrada e borda de descida para ativação. o duty fica assim: em pseudo código, verificar no manual as sintaxes corretas período = TIMx_capture1 duty = TIMx_capture2 duty = duty*100 duty = duty/período
  18. Com uma relação Ic/Ib = 10 não é surpresa ter baixo Vce.
  19. Vg mínimo para esse mosfet é 4V, 3.5V é buscar caca, a coisa vai cheirar mal. Como não é caro vale a pena ter como padrão. Só faz sentido a busca de algo mais específico em escala onde alguns cents de diferença dão um bom Natal.
  20. Mesmo que o NE555 esteja com 5V de alimentação o mosfet IRLZ44N irá aquecer menos que 1ºC com 500mA. Um canhão para matar uma mosca. Se colocar dissipador vira uma fortaleza! kkk
  21. int: significa que o valor é inteiro, sem casa decimal, podendo ser positivo ou negativo. É um recado ao compilador de como deve tratar a variável que está sendo declarada, não gera comando no assembler. const: significa que o valor é fixo. É um recado ao compilador de como deve tratar a variável que está sendo declarada, não gera comando no assembler. short: significa que a variável declarada ocupa apenas 1 byte. É um recado ao compilador de que deve reservar apenas 1 byte para armazenamento da variável, não gera comando no assembler. MOV: Este comando está presente em controladores que usam 2 ou mais bancos de endereçamento. Vai encontrar nos PICs da Microchip, por exemplo. Supondo que queira guardar um valor no endereço 000A F5C0. Se estiver se referindo à RAM Store Se estiver se referindo ao mapa de registradores (timers, portas e outros elementos de hardware) MOV Já nos processadores que utilizam endereçamento linear por não existir duplicidade de endereços também não há duplicidade de comandos. O STM8 ou o STM32 são exemplos disso, nesses para ler ou gravar só existem Load e Store. Não há necessidade de comandos distintos pois nessas implementações a RAM, FLASH e registradores estão na mesma régua de endereçamento, sem duplicidade.
  22. Sério? Se conseguiste fazer um programa que controla algo e que tem um feedback então usaste uma ou mais variáveis mesmo sem saber. Um simples botão conectado a um pino é uma variável. Se houver leitura de tensão, idem.Para facilitar a programação damos nomes a tais leituras e por não terem um valor fixo são variáveis. Quando os valores são fixos os chamamos de constantes. Um exemplo de constantes e variáveis trabalhando juntas: existindo um sensor de rotação acoplado na roda de um veículo o seu RPM é uma variável. Desejando converter essa rotação em velocidade, a velocidade também é uma variável. A conversão de RPM para velocidade leva em consideração o diâmetro da roda (que é fixo) e a unidade a ser utilizada (metros por segundo, km/h). Feitas as contas isso gera um valor fixo de conversão (constante). Variável velocidade = variável RPM x constante de conversão. Simples assim. Um outro conceito de variável são as locais, públicas e privadas. São muito uteis quando se se tem mais de um programador trabalhando para evitar conflitos de nomes. São fundamentais na utilização de bibliotecas. As bibliotecas nada mais são do que programinhas prontos que te entregam um resultado mastigado. Elas também utilizam variáveis próprias além das que enviaste para processamento e para evitar que a coincidência de nomeamento bagunce o programa elas são privadas, isto é, só são reconhecidas dentro delas e não haverá conflito se o programador repetir o nome. No entanto, quando se estuda as instruções de uma CPU não encontramos as variáveis. Ao invés disso encontramos umas 20 formas de manipulação de endereços de memória, seja para leitura ou gravação de dados. Já pensou que doideira se a cada necessidade de gravar ou recuperar um valor tivéssemos que escrever o endereço de memória no programa? Utilizamos as variáveis e o compilador que se vire em determinar os endereços para cada variável ou constante que inventamos. Ou seja: é muito mais fácil dar nomes para os valores do que armazenar ou recuperar os valores pelos seus endereços. Exemplo numa CPU de 8 bits que permite o endereçamento direto no programa: No programa fica: intervalo = TIM1_CH1 // Lê o capture do canal 1 de TIM1 para a variável intervalo Na CPU fica: LD R1, TIM1_CH1 // carrega no registro R1 o valor do endereço TIM1_CH1, A expressão TIM1_CH1 é substituída pelo endereço físico do TIM1_CH1. Store R1, intervalo // Grava no endereço RAM intervalo o valor contido no registro R1. A expressão intervalo é substituída pelo endereço físico da memória RAM alocado para essa expressão. Caso o programador não faça alocação do endereço de memória para a variável o compilador inventa um no momento em que a variável é declarada.
  23. Nos meus desenvolvimentos quando possível gosto de usar uma CPU cheia de pinos, memória, recursos e coisa e tal. Nesse primeiro momento é ter algo que funcione e talvez a ideia inicial necessite de recursos extras. Conseguido o intento vou para a minimização buscando a CPU mais barata e o clock mais baixo possível. Quando é algo que pareça ser muito simples começo com a CPU barata mas esta arrogância de achar que já tenho todo o projeto resolvido na cabeça já me custou muita perda de tempo.
  24. Os 2 modelos funcionam a contento e de forma idêntica nos pinos e forma de calcular mas nos modelos CMOS a corrente de saída é menor, esse mosfet consome muito no pico do gate. O modelo bipolar, NE555 fornece 200 mA tanto no nível alto como no baixo. Os modelos CMOS tais como LMC555, ICM7555, TLC555 possuem uma capacidade de corrente muito mais baixa. Vá de bipolar, deixe os CMOS para projetos de frequência elevada ou que drenem pouca corrente na saída.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!