Show Posts
Pages: 1 2 [3] 4 5 ... 190
31  International / Generale / Re: inverter 12/115v 400hz on: April 22, 2014, 07:02:43 am
Ciao luca, bentornato.

PS: guarda non è facile scordarsi di te, ho fatto vedere molte volte il video con il motore in vasca.

Motore Rotax? da ragazzino guardando l'esploso del motore con ammissione a disco rotante mi ecci..   smiley-grin

Vabò, torniamo seri.

Su nuova elettronica n ?? c'è un inverter interessante, l'alimentazione 300VDC viene ricavata da uno switching simil car amplifier SG35xx (24, 25, 26 ecc), con feedback (quindi stabilizzata) che alimenta il ponte intero modulato da un controller ?? (forse ST7) che fornisce segnali PWM con andamento pseudo sinusoidale.

In effetti modificando la tensione VDC di 300V a 115 * 1.41 si risolve il problema della tensione.

Per la fo di 400HZ il micro deve pilotare il ponte intero di uscita, se lo fai ad onda quadra è semplice, mentre se vuoi pilotare il ponte con segnali PWM pseudo sinusoidali devi collezionare in un array tutti i valori del PWM che eseguiti con tempistiche critiche approssimano un onda sinusoidale. p = 1/400 = 0.0025, p = 1/50 =  0.02, c'è una bella differenza tra 50HZ e 400.

Ciao.
32  International / Software / Re: come "uscire" da una void una variabile?? on: April 22, 2014, 06:31:45 am
Potresti anche affrontare la cosa in altro modo forse meno intuitivo.
I 5 dati li metti in un array, scrivi una funzione che esegue la ricerca del valore maggiore che una volta trovato ritorna il valore dell'indice. L'indice lo usa in un costrutto switch (index) case 1: ecc

La ricerca del valore maggiore in un array sarebbe più rapida se i dati fossero messi in ordine, se non
lo sono (perché magari cambiano molto spesso come in questo caso) la ricerca è sì più lenta ma con solo 5 valori non dovrebbe creare problemi al robot.

In effetti di robotica non ci capisco nulla magari c'è già una soluzione collaudata, ma non lo conosco.

Ciao.
33  International / Software / Re: Bug funzione delay? on: April 22, 2014, 06:21:35 am
Non ho verificato sto in fiducia.
Per TIMER0 sapevo per certo che lo usa e quindi lo configura, un altro timer gli serve per il PWM e il terzo (credo TIMER1 16 bit) sapevo non gli servisse.

Io penso che prima di fare cose non previste da arduino si dovrebbe sempre indagare su cosa fa e come, questo se vogliamo rappresenta il rovescio della medaglia di Arduino o in genere di qualunque collezione di funzioni preconfezionate.

Ho avuto anche qualche problema a fermare un timer in C (senza arduino), si tratta di un display 4x7 segments che ha due funzioni power_off e power_on e in effetti non si voleva fermare togliendo la sorgente del clock ora non ricordo diciamo che ho pasticciato un po e poi ha funzionato ma non ho indagato.

Ciao.
34  International / Generale / Re: Scelta Arduino per Ing. Informatico on: April 20, 2014, 12:46:24 pm
Penso che la yun sia la scelta più adatta, ma non è detto, in generale arduino
non è un giocattolo e di base richiede competenze che un Ing. informatico
potrebbe anche non avere, se conosce e usa correntemente il linguaggio C/C++ e non ha grande
interesse per i circuiti la yun è perfetta.

Se invece ama proprio il livello di programmazione più basso e ne capisce di elettronica la  Uno, Due e Mega
potrebbero essere molto gradite.

Ciao.
35  International / Software / Re: Sistema di allarme con Arduino Uno on: April 20, 2014, 12:37:23 pm
Quote
Può essere ?

Forse, facciamo finta che sia proprio quello.

Il collettore (c) è il terminale in corrispondenza della rastremazione nel corpo del led, inoltre è il più corto dei due.
L'emettitore (e) ovviamente è l'altro (quello che non è il collettore smiley-razz).

Solitamente il transistor ha anche un terminale detto Base (b), in questo foto transistor la base
è al centro della lente la quale si polarizza se riceve fotoni alla lunghezza d'onda di 970nm
(siamo nel campo degli infrarossi IR).

Il collegamento che hai fatto per il fototr è sbagliato, devi connetterlo come connetteresti
un normale transistor, quindi (c) connesso alla R (R=resistenza) l'altro capo a +5V.
L'emettitore lo colleghi direttamente a GND.

Il segnale lo devi prelevare dal nodo (c) con R. A questo nodo in condizioni di riposo misuri circa +5V, che entrano in un pin di arduino, quando il fototr riceve IR la base si polarizza è assorbe corrente dal collettore, il risultato è che adesso misuri una tensione prossima a GND.

Nel codice tu ha scelto di ricavare informazioni analogiche, ma penso dovresti riuscire ad usare digitalRead che restituisce LOW quando il fototr riceve IR, HIGH quando interrompi il fascio di IR.

gpb01 mi ha anticipato, ho letto il suo messaggio è concordo con quanto scrive.

Ciao.

36  International / Software / Re: Bug funzione delay? on: April 19, 2014, 09:07:40 am
Provato ed in effetti mi sembra un comportamento anomalo quantomeno, forse un side effect boo, comunque confermo IDE 0155 avr-gcc 4.8.1.

Ciao.
37  International / Software / Re: Sketch controllo encoder con interrupt - ho bisogno di chiarimenti on: April 19, 2014, 08:43:19 am
Il codice nel libro è ha scopo didattico per questo hanno usato un modo per spegnere e riaccendere globalmente gli interrupt. Il bit per accendere e spegnere gli interrupt si trova nel registro SREG.

cli() in sostanza spegne o disabilita gli interrupt globalmente, la riga seguente:
Code:
Pos = encoderPos;
viene eseguita con gli interrupt disabilitati.

Continuando gli interrupt vengono riabilitati senza usare sei(), ma scrivendo il valore del registro salvato in oldSREG,
in SREG. In questo caso oldSREG mantiene lo stato di SREG nel momento in cui gli interrupt sono abilitati.

Il libro dovrebbe consigliarti di usare una macro con cui creare codice eseguito atomicamente, continua leggere magari lo spiega più avanti. Se hai ancora dubbi posta pure, comunque fai una ricerca nel forum perché l'argomento è stato più volte affrontato anche in profondità.

In tutte le architetture hardware delle CPU c'è il concetto di interrupt, che trasportato nel mondo reale equivale
a chiamare qualcuno impegnato in una conversazione al telefono, la sequenza di ciò che accade è la seguente:
Il tizio senta la richiesta di interruzione e dice al tipo che sta all'altro capo del telefono; scusa ho una richiesta di interruzione, dopo di che ti presta attenzione ed esegue la ISR e al termine torna a parlare con il tipo al telefono.

Se la telefonata è di importanza vitale, tizio disabilita gli interrupt in modo che non possa essere interrotto durante la conversazione.

PS: il libro non l'ho letto.
PS1: Per comprendere nel dettaglio gli interrupt devi leggere il datasheet del microcontroller.
38  Community / Bar Sport / Re: [OT] PIC, 8051, MCU e CPU varie on: April 19, 2014, 02:25:24 am
Io al tempo sollevai delle critiche al software Arduino in particolare l'IDE, non ricordo le parole esatte, forse penoso, ridicolo insomma tutto il contrario di un elogio. Ho avuto discussioni con Banzi (che non conosco di persona) e di primo acchito lo giudicai permaloso, in seguito in PM mi spiego il motivo e lo compresi.

Sono la testimonianza che si può criticare senza essere bannati, guai se non fosse così.

Sollevate le critiche, mi comportai di conseguenza, ciò smisi di usare l'IDE. Quindi a me non piace L'IDE di arduino
se posso non lo uso, se sono costretto smetto di criticarlo e se non posso esimermi mi adopero per migliorarlo.
Questo per dire che se linux fa gagare sta a significare che non lo devi usare ecc..

Ora devo dire che L'ide 0155 ha fatto passi da gigante, continua a non piacermi e non lo uso, ma qualche volta lo provo e me ne pento subito, in fin dei conti gli manca qualcosa che io stesso non sono in grado di concepire neanche concettualmente, la speranza è che tra gli sviluppatori c'è ne sia uno in grado di usare il wrap llvm per
l'analisi della sintassi in tempo reale e la colorazione della sintassi e l'espansione delle macro ecc, ma poi c'è da vedere se il codice gira sufficientemente veloce da essere giudicato funzionale.

Ho provato eclipse di recente e mmm, non mi ritrovo con il concetto di workspace e qualche altra cosa che non digerisco ma tutto sommato il plugin AVR non è male e lo considero un successo il fatto stesso che esiste.

Considerazioni su &lock:
null

Ciao.

39  International / Software / Re: Arduino Multitasking on: April 19, 2014, 01:14:24 am
qui https://github.com/chrismoos/avr-os dice che per compilare la versione 2560
devi  eseguire il build con: 
Code:
make DEVICE=arduino_mega2560

Forse è per questo che con la mega non ti funziona.

Non conoscevo avr-os, ora gli ho dato uno sguardo veloce ed è interessante.
Per chi volesse saperne di più di RTOS gli consiglio di partire dal visionare il file context.h, le
macro SAVE_CONTEXT e RESTORE_CONTEXT rappresentano il cuore del OS.

Comunque, una applicazione sul pc anche complessa richiede raramente uno o più thread supplementari,
stessa cosa vale per le applicazioni embedded, anzi ci si deve chiedere sempre; questa cosa la possa fare
senza creare un altro task?
La risposta deve essere quasi sempre si,  altrimenti si finisce per avere 10 task che si mangiano le risorse
e il programma fa ben poco e lentamente.

Tuttavia è possibile che tu abbia proprio necessità di un RTOS, ma al momento mi sembra che tu non abbia
le competenze per usarlo nel modo corretto; Il rischio è quello di cacciarsi nei guai senza sapere come ci si è finiti e tanto meno si sa come uscirne.

Un RTOS ben dotato fornisce anche funzioni per accedere all'hardware come timer, i2c, eeprom ecc
svincolando il programmatore dalla conoscenza intima dell'hardware. Senza RTOS ti tocca invece studiare
il datasheet e scrivere codice accessorio non strettamente legato alla applicazione.

Con arduino style è pratica comune usare millis() o micros(), non sarà bello ma funziona, comunque è possibile
renderlo accettabile creando delle funzioni che operano su millis() e raramente ciò risulta insufficiente e in tal
caso si può cominciare a pensare ad un RTOS.

Ciao.
40  International / Generale / Re: esercizi per arduino on: April 15, 2014, 05:07:53 pm
Non mi stupisco del fatto che dopo mezzo libro non sia riuscito a scrivere un programma.
Hai provato a riprodurre gli esercizi a partire dal blink senza guardare il libro?

Il blink può essere scritto in molti modi diversi, tu trova il tuo modo.
Dovresti provare a modificare gli esercizi per aggiungere o rimuovere funzionalità.
Potresti provare a scrivere un programma che è un mix di blink senza delay e Button.
Il programma parte con il led spento e legge continuamente lo stato del pulsante,
se il pulsante è premuto il led lampeggia e continua a farlo anche se rilasci il pulsante.
Se premi nuovamente il pulsante il led si spegne e resta spento anche rilasciando il
pulsante. Il comportamento del programma è ciclico.

Scrivere pseudo codice ti può aiutare descrivere cosa deve fare il programma senza obbligarti
a ricordare le parole chiave del linguaggio, tuttavia alcune parole chiave di C sono comodo da usare
anche con lo psedo codice, come if, else, for, while ecc .
Esempio:

at power on run setup (All'accensione esegue il setup)

setup {
    imposto il pin 5 come ingresso
    Ritardo 2000ms   (evito di impegnare la seriale all'avvio)
    Inizializzo la seriale a 9600 BAUD
   
    Da qui in poi Arduino passa ad eseguire continuamente la funzione loop()
}

loop {
   
}

Come vedi anche con lo pseudo codice uso le graffe per delimitare un blocco, ma non è legge ma il
C le usa per lo stesso motivo perché cambiare carattere.

Ciao.




41  International / Generale / Re: Criterio di divisibilità per un numero in Arduino on: April 14, 2014, 11:33:02 am
Si ricordi bene
7%7 = 0
6%7 = 6
5%7 = 5
...ecc
0%7 = 0 ops

Ciao.


42  International / Software / Re: Probabile BUG del compilatore ... on: April 14, 2014, 10:22:03 am
Vedo il mal di testa non ti spaventa a me si invece.
La trama si infittisce, entrambe i compilatori incarnano di default le specifiche C++98 e questo è già
sufficiente a creare il mal di testa, se poi ci aggiungi quello evidenziato è un comportamento documentato nei libri C++ ed è tipico di C++98.... a quali conclusioni si arriva; gcc-4.8.1 non si comporta come C++98 o forse si, perché ci sono delle ammended del 2003 che dovrebbero essere...uff uff, leggi qua:

Quote
The original ISO C++ standard was published as the ISO standard (ISO/IEC 14882:1998) and amended by a Technical Corrigenda published in 2003 (ISO/IEC 14882:2003). These standards are referred to as C++98 and C++03, respectively. GCC implements the majority of C++98 (export is a notable exception) and most of the changes in C++03. To select this standard in GCC, use one of the options -ansi, -std=c++98, or -std=c++03; to obtain all the diagnostics required by the standard, you should also specify -pedantic (or -pedantic-errors if you want them to be errors rather than warnings).

()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

Ciao.
43  International / Hardware / Re: SMPS on: April 14, 2014, 10:13:27 am
gogolander non ti offendere ok.

Secondo me, dovresti continuare a studiare e mettere da parte momentaneamente il progetto, perché al momento
non hai sufficienti competenze per realizzarlo. Indi per cui, studia e acquisisci le competenze per realizzare il progetto, cioè vedilo come un progetto a lungo termine.

Cerca con google qualcosa di pronto, qualche progetto a cui potersi ispirare.  
Il tuo professore, mmm... tartassalo, scassagli le balle ma mi raccomando con classe, fatti dare l'email
personale così gli mandi link a qualcosa di simile a quello che ti serve e chiedi lumi.
Se però vedi che non ottieni risultati non insistere oltre misura potrebbe anche essere che è impegnato
in altri progetti o è più teorico che pratico.

@icio
Si lo ha scritto all'inizio vuole potere regolare la corrente e pure la tensione e già qui c'è un bel problema.
ops come non detto.

Ciao.
44  International / Software / Re: Problema conversione variabile di tipo FLOAT in STRING (utilizzo dtostrf() ) on: April 14, 2014, 08:50:10 am
Code:
/**
 *  Il programma permette di inviare via seriale
 *  byte dopo byte il contenuto di un oggetto di
 *  tipo DataBlock.
 *  Si può fare di più, ad esempio si può inviare qualunque oggetto di qualunque tipo via seriale
 *  byte dopo byte.
 */

/**
 *  Per ricevere i dati da un microcontroller o computer
 *  e sufficiente creare lo stesso sketch ma al posto di:
 *  Serial.write(*ptrTo);
 *  ci mettiamo:
 *  if (Serial.available() > 0) {
 *    *ptrTo = Serial.read();
 *  }
 *  L'obbiettivo è di leggere i dati e salvarli nell'oggetto dataBlock
 *  PS: non testata la lettura
 */
/*
  tipo di struttura per collezionare dati
  per poi spedirli via seriale byte per byte
*/
typedef struct
{
  float    arg0;
  float    arg1;
  float    arg2;
  byte     arg3;
  byte     arg4;
  byte     arg5;
  uint32_t arg6;
} DataBlock;

// global variable

bool alredySend;    // false per inviare i dati

DataBlock dataBlock; // oggetto dataBlock da spedire

void setup()
{

  alredySend = false;

  delay(2000);
  Serial.begin(115200);

  // carica dati a caso nell'oggetto dataBlock
  dataBlock.arg0 = 152.24;
  dataBlock.arg1 = 489.569;
  dataBlock.arg2 = 100.029;

  dataBlock.arg3 = 49;        // un byte 1
  dataBlock.arg4 = 50;        // un byte 2
  dataBlock.arg5 = 51;        // un byte 3
  dataBlock.arg6 = 456898;     // 32 bit

}

void loop()
{

  if (alredySend == false) {

    uint8_t *ptrTo = (uint8_t *)&dataBlock;

    for (uint8_t i = 0; i < sizeof(dataBlock); i++) {

      Serial.write(*ptrTo);  // spedisce il dato puntato da ptrTo
      ptrTo++;                     // punto al prossimo byte


    }

    alredySend = true;  // i dati sono stati spediti
  }


}


Anziché convertire da float ad intero e spedire i dati come stringhe, si spedisce
byte per byte il contenuto di una porzione di memoria RAM in cui ci abbiamo messo
la nostra collezione di dati come appunto è dataBlock.

Spero possa tornarti utile, ciao.
45  International / Hardware / Re: SMPS on: April 14, 2014, 07:15:00 am
Quindi: 500kW 230V AC->12V o 5V DC. Fisso inizialmente i 12V per comodità, che fa 40A di corrente. L'ideale per me sarebbe ottenerli senza trasformatore...
Ecco ...mi pareva ...a quanto pare hai un istinto autolesionista e vuoi ammazzarti ,  appena tocchi la vasca ti folgori
Infatti, una delle due fasi è comune con l'uscita quindi online.

Gli alimentatori per PC sono a mezzo ponte e per questo è difficile superare 500W, per cui poi passa a mosfet in configurazione ponte intero, cioè 4 mosfet che pilotano un trasformatore switching, in questo modo il duty cycle
è variabile in un più ampio range rispetto al flyback o mezzo ponte.

1MHZ dici, no non condivido, massimo 100-200KHZ, poi quando il circuito a 100KHz lavora si passa a testarlo a frequenze maggiori. Se sei bene attrezzato come strumentazioni e hai delle basi solide di elettronica con studio e sperimentazione arrivi a centrare il risultato, diversamente....hai la scala troppo corta.

Tu parli di Buck, quindi online, cioè non isolato dalla 220, così a spanne eviterei di pensare a Buck.
Se ti può essere utile c'è Power Integration che realizza dei chip per switching online di piccola potenza, in particolare ho dato una lettura ai chip per driver led 220V 35V xxxmA, c'è anche documentazione che una volta letta e compresa di permette di verificare se un Buck da 10A sia realizzabile o meno.

Solitamente per gli esperimenti si usa un trasformatore con manopola di regolazione a cui si connette una altro
trasformatore isolatore a cui segue un ponte diodo raddrizzatore, oppure si usano gli SCR con correnti continue, o i TRIAC con correnti AC a cui segue raddrizzatore a ponte diodo.

Ciao.

Pages: 1 2 [3] 4 5 ... 190