Utilizzare Analog Discovery 2 per effettuare il debug di controller per motori

Questo progetto mostra come creare e avviare un test automatizzato (scritto in C) per effettuare il debug di un H-Bridge di un motore stepper, con il Digilent Analog Discovery 2 Analizzatore Logico, I/O Statico, Voltmetro e Generatore di Pattern.

Fig.1

Digilent Analog Discovery 2  è un oscilloscopio, analizzatore logico e strumento multi-funzione USB che consente agli utenti di misurare, visualizzare, generare, registrare e controllare circuiti a segnale misto di qualsiasi genere. Grazie al software gratuito WaveForms, Analog Discovery 2 può essere configurato per funzionare come uno dei tanti test e strumenti di misura tradizionali, come Oscilloscopio, Generatore di Funzioni, Alimentatore, Voltmetro, Registratore di Dati, Analizzatore Logico, Generatore di Pattern, I/O Statico, Analizzatore di Spettro, Analizzatore di Rete, Analizzatore di Impendenza e Analizzatore di Protocollo.

 

Materiale necessario

Analog Discovery 2 Oscilloscopio 100-MSPS USB; Analizzatore Logico e Alimentatore Variabile

Fig.2

 

ARDUINO UNO

Fig.3

 

WaveForms è l’applicazione software gratuita per Analog Discovery 2 che abilita tutti gli strumenti di Analog Discovery 2, incluso l’oscilloscopio, l’analizzatore logico e il generatore di funzioni. WaveForms SDK (Software Development Kit) fornisce librerie ed esempi per scrivere applicazioni personalizzate in C, Python e altri linguaggi di programmazione.
In questo esempio vogliamo effettuare il debug di un driver motore H-Bridge DC e un driver stepper controllati da un Arduino UNO con Analog Discovery 2.
In questa applicazione utilizzeremo due potenziometri per impostare la velocità del motore DC e la posizione dello stepper.
Un sensore per l’effetto Hall invierà un segnale d’interrupt all’MCU ogni mezza rotazione del motore DC, dopo il quale la direzione della rotazione verrà cambiata.
A questo punto leggeremo i valori dei potenziometri. Entrambi i motori saranno verificati inviando dei segnali di controllo ai driver, mentre l’MCU è disabilitato. Quindi effetueremo la misurazione dopo aver riabilitato l’MCU.

 

Fig.4

 

Creare un test automatizzato

Innanzitutto creiamo il file d’intestazione (AD2_motor_debugger.h) per dichiarare e definire le seguenti funzioni. Includiamo anche la Libreria DWF (dwf.h) e le altre librerie C standard nel file d’intestazione.

  1. Avviare Analog Discovery 2
  2. Reimpostare gli strumenti di Analog Discovery 2
  3. Scrivere un valore in I/O Digitale (Per I/O Statico)
  4. Leggere il voltaggio da un input analogico (Per il Voltmetro)
  5. Avviare due motori (Per il Generatore di Pattern)
  6. Registrare dei segnali digitali (Per l’Analizzatore Logico)
  7. Salvare i dati in formato .csv

Il file sorgente principale (main.c), che è un wrapper, definisce la struttura del progetto e dei due script, uno in Python e uno in MATLAB, e mostra i dati registrati.

Definiamo le connessioni e abilitiamo l’Analog Discovery 2 all’inizio del file sorgente principale. Per testare i driver motore, l’Arduino Uno deve essere disattivato portanto il suo piedino RESET a massa. Leggiamo quindi la tensione presente sui potenziometri e con la funzione digital_write() e le funzioni di generazione PWM testiamo entrambi i motori a velocità diverse e in entrambe le direzioni.

Per registrare i segnali provenienti dall’Arduino dobbiamo riattivarlo riportando il pin di RESET nelle condizioni standard.
Allochiamo la memoria per il numero di campioni (data_size) e la dimensione del buffer (digital_data). Dopo l’acquisizione, verifichiamo l’eventuale perdita o corruzione dei dati.
I risultati del test vengono mostrati nella finestra della console, insieme a messaggi relativi all’operazione corrente.

Visualizzare i dati in MATLAB o Python

I dati possono essere esportati in un file e visualizzati avviando lo script MATLAB plotting.m oppure il programma Python plotting.py.

 

Fig.5

 

Fig.6

Leggi la guida completa e scarica tutti i file sorgente sulla Pagina di Riferimento Digilent.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Main Menu