STM32F103C8T6 - os primeiros passos. Continue fazendo o osciloscópio

Continuação do artigo . Desta vez, tentaremos conectar o USB sem uma queda na frequência de medição e coletar uma parte analógica de canal único.


Lutando com USB


Nosso MK possui um hardware USB. Eu realmente queria usá-lo. Eu até queria isso antes da compra. Mas devido a dificuldades, ele foi adiado "para mais tarde". E as dificuldades são:
  • Os desenvolvedores de USB aparentemente tinham muito tempo e inteligência. O problema é que eles sentiram que todo mundo deveria ter menos. Se você tentar lidar com o USB de acordo com a documentação, esta lição claramente não será por um dia.
  • Ao conectar bibliotecas, surgiram dificuldades constantemente. Como conectá-los em projetos Coocox que eu ainda não descobri.

Como resultado, em um fórum, encontrei um exemplo convertido em Coocox, que funcionou.

Os problemas com o nosso USB não terminaram aí. Um adaptador USB <-> USART separado tem a vantagem de ser separado, o que significa que sua operação não depende do nosso MK, a saber:
  • Frequências (para uma frequência de conversão mais alta, eu fiz overclock no MK);
  • Reinicializa o que acontece durante um piscar.

Quando há um adaptador, podemos fazer qualquer coisa com o MK - o adaptador funcionará nesse caso e a porta COM do sistema não irá a lugar algum.
Com o overclock, essa decisão foi tomada: no estado normal, o MK opera na frequência padrão. Quando precisamos fazer uma medição, fazemos um overclock do MK (sim, ao contrário do AVR, ele pode fazer isso em movimento), coletamos dados, reduzimos a frequência e transferimos os dados lentamente para o computador.
Para não trocar nada após cada reinicialização / piscamento, examinamos a placa de circuito:

Com um jumper, aqui um dos fios é puxado para +3,3 V e o computador vê que o dispositivo está conectado. Foi experimentalmente constatado que, após a atualização do MK, para que a porta COM funcione novamente, você deve puxar e conectar o conector USB novamente ou remover e recolocar o jumper. A segunda opção é muito mais fácil de automatizar. O segundo pino do conector do jumper através de um resistor conectado ao pé MK e depois de uma reinicialização após algum tempo, alimento-o com um nível alto. Como resultado, o computador pensa que o dispositivo foi desligado e ligado novamente. Aqui está outro ponto: se você desconectar o dispositivo com a porta aberta e ligá-lo novamente, a porta COM aparecerá no gerenciador de dispositivos, mas você não poderá abri-lo (eu uso o Windows 7).

Agora sobre overclock. Para que o USB funcione, o MK pode operar com essas frequências no máximo:

E para obter a velocidade máxima da ADC, eu a faço o overclock da seguinte forma:

Para alterar o multiplicador da PLL, ele deve estar desligado. E quando pelo menos por um momento o PLL é desconectado, o USB com clock do qual ele não gosta e o aplicativo no computador na maioria dos casos travam com uma porta aberta. Após uma pesquisa malsucedida do problema, foi encontrada uma maneira de combinar o USB embutido e o overclock:
  1. O aplicativo no PC envia o comando MK para executar uma série de transformações e fecha imediatamente a porta;
  2. O MK espera um pouco (para que o aplicativo tenha tempo de fechar a porta) e desativa a linha USBDP de puxar para +3,3 V;
  3. O MK desativa o PLL, altera o multiplicador de 9 para 16 e ativa o PLL novamente;
  4. MK realiza uma série de transformações memorizando o resultado;
  5. O MK desliga o PLL, altera o fator de 16 para 9 e liga o PLL novamente;
  6. O MK inclui puxar a linha USBDP para +3,3 V;
  7. Após algum tempo, a porta virtual COM aparece novamente no PC;
  8. O aplicativo no PC reabre a porta e envia um comando ao MK para coletar o resultado;
  9. O MK transmite lentamente o resultado, o aplicativo cria um cronograma.

Não é conveniente, mas para abandonar o adaptador de hardware USB <-> USART e não perder 7/16 = 44% da velocidade, vale a pena.

Tomamos outra cobrança


Todo o tempo antes disso, usei esta placa:

é conveniente quando é a principal do dispositivo, mas não quero conectá-la com fios à placa de ensaio. Para fazer isso, outra placa foi encomendada há muito tempo para

que você possa colá-la ou soldá-la facilmente em outra.
O circuito deste fórum dificilmente foi encontrado no fórum .
Algumas impressões. Em geral, ela agradou. À esquerda, estão os pinos SWD, cada contato é assinado e, se os chineses não tivessem soldado o conector de canto, a assinatura seria ainda mais visível e mais conveniente do que observar a pinagem JTAG na placa anterior a cada vez. Tudo piscou sem problemas, apareceu o USB, mas surgiu um pequeno problema: a linha USBDP estava bem escondida para +3,3 V com um resistor. Então o USB ficou desconectado ... Eu tive que dessoldar esse resistor e soldar a linha através do resistor até a perna livre do MK.

Parte analógica


Antes disso, trabalhei apenas com sinais da faixa de 0 a 3,3V. E isso não é algum tipo de zero flutuante lá, mas a terra que veio com um cabo USB. Mas quero que o osciloscópio seja capaz de observar a forma da tensão da rede elétrica (centenas de volts) e do ECG (frações de um milivolt).
A tarefa é geralmente simples: pegue a faixa de entrada do osciloscópio e mapeie-a na faixa de entrada do ADC (0 - 3,3V). O circuito foi inventado assim:

R1, R2, R3 - divisor de entrada. Transferindo as pernas MK para o modo de entrada ou saída, podemos alterar a taxa de divisão.
R11, R12, R13 - resistores de um amplificador não inversor. O ganho depende da condição dos pés do controlador.

Havia dúvidas quanto à possibilidade de usar as saídas digitais do MK para tais fins. A medição mostrou que a corrente através da saída MK a 3,3 mA leva a saída a 80 mV, ou seja, a resistência de saída é de cerca de 24 Ohms. O potencial de uma saída suspensa no ar a 3-4 mV difere na terra / potência. Para um sistema não muito preciso, o resultado é bastante aceitável.

Para não arruinar as características de frequência pelas quais lutei tanto, o agente é necessário não apenas de maneira alguma, mas rápido. Eu escolhi o AD826. E então houve problemas. Quem se importa, você pode ler a história aqui e aqui . Em resumo: chips falsos são vendidos no Ebay.

O abrigo precisa de energia bipolar. Para isso, era necessário outro chip - LT1054. O diagrama de conexão é retirado da folha de dados, portanto não o descreverei em detalhes.

Total


Lembrando os planos da primeira parte do artigo :
  1. Derrote o USB para abandonar o conversor USB <-> USART;
  2. Finalize a parte analógica para que a faixa de tensão de entrada não seja de 0 a 3,3 V, mas seja mais decente;
  3. Tornar o modo multicanal;
  4. Implementar controle de um PC;
  5. Faça um dispositivo acabado no estojo;

Entendo que completei 1, 2 e parcialmente o 4º parágrafo.

Esse dispositivo é necessário na casa? Bem, se você compará-lo com o analógico C1-117, na frequência C1-117 é várias vezes maior. Mas aqui você pode gravar o sinal por um tempo suficientemente longo e depois examiná-lo lentamente. Então, por exemplo, vi uma interrupção acionada pelo meu gerador no Arduino:


Se comparado com os produtos artesanais em um AVR ou placa de som, este excede significativamente a frequência de conversão.
À custa dos componentes, verifica-se:
  • LT1054 - US $ 0,8;
  • placa com controlador - US $ 4;
  • operativo - US $ 3;
  • resistores, capacitores, diodos - não mais que $ 1.

No total, acontece cerca de US $ 9 + cartão + caixa.
Frequência de conversão 9 MSPS permite observar a frequência do sinal até 1 MHz. Por US $ 60, você pode comprar um osciloscópio baseado em PC com os melhores recursos, mas simplesmente não há ofertas pelo valor resultante.

No entanto, o dispositivo que foi mais valioso para mim não foi o dispositivo em si, mas a experiência adquirida como resultado de tentar tornar algo mais difícil do que piscar com um diodo e alegar ser útil! Eu nunca estive envolvido com eletrônica no trabalho e, como amador, posso dizer que não é difícil. Longo sim. Precisa de alguma função - você começa a fazer. No caminho, você coleciona muitos ancinhos, mas no final acaba. E tantas vezes. Mesmo em uma tarefa aparentemente tão pequena como essa, tem sido tantas vezes. Por exemplo, eu consegui fazer nutrição bipolar para o amplificador operacional apenas a partir da terceira tentativa. Mas, se houver perseverança suficiente e a tarefa for, em princípio, viável, o resultado definitivamente resultará em algo semelhante ao que foi originalmente concebido!

Aparência do artesanato: Continuação


Source: https://habr.com/ru/post/pt385385/


All Articles