| | #11 (permalink) Top | |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| grazie
grazie.. mi ci dedico a "rate" appena posso installo e collaudo a dopo Citazione:
| |
| | |
| | #12 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok tutto bene
ok ragazzi funziona... dopo un pò di sana lettura e qualche prova sono riuscito a far funzionare il trachiggio... adesso sto scrivendo una demo in Java che invia numeri verso il microcontrollore il quale trasformerà tali numeri in impulsi opportuni per muovere un servomeccanismo.. |
| | |
| | #13 (permalink) Top | |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| Ci Sono Riuscito
OK FUNZIONA TUTTO adesso riesco a leggere e scrivere attraverso la seriale USB, con il 16F628, in allegato metto una foto del circuito, mentre vcome software va bene anche quello che si trova in rete qui: Bente Petersen's 9600baud 16F628 UART test circuit and program Citazione:
| |
| | |
| | #14 (permalink) Top | |
| User Data registr.: 29-05-2006 Residenza: Catania
Messaggi: 2.933
| Citazione:
__________________ Il filo attaccato all'antenna non mente mai.... Troppo vento, si torna a casa....![]() I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito | |
| | |
| | #15 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok
si RS232 ..infatti nel circuito trovi la max232... poi con un adattatore della hama adatto alla USB del mio portatile.. adesso andrò a creare con la mille fori il circuito, in modo che per testare i microcontrollori anchè usare un display uso il PC. Presto cercherò di scrivere un applicazione in Java che prende il segnale seriale quindi anzichè usare Hypeterminal userò la mia applicazione... e così via esperimento dopo esperimento.. vedrò un pò dove si può arrivare..a dopo |
| | |
| | #16 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| microcontrollori e Java
oggi ho avuto il tempo per scrivere una classe Java che è in grado di ricevere e spedire numeri al 16F628 , direi molto interessante se pendo che tale applicazione può funzionare anche in un'applicazione client - Server.. ecco la parte centrale del software: try { portId=CommPortIdentifier.getPortIdentifier("COM1" ); serialPort=(SerialPort)portId.open("RS232",2000); // ogni due secondi controlla se ci sono errori nella trasmissione dei dati serialPort.setFlowControlMode(SerialPort.FLOWCONTR OL_RTSCTS_IN); //Controllo dei segnali Request to send Clear to send System.out.println("porta aperta"); outputStream=serialPort.getOutputStream();// si prende il canale di output allo stesso modo potrebbe prendere quello di input outSer = new DataOutputStream(outputStream); serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); // quando ci sono dati in arrivo serialInput=serialPort.getInputStream(); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch(Exception e) { System.out.println("ERRORE"); } } //__________________________________________________ ___________ public void actionPerformed(ActionEvent e) { String b; int data_out = 0; if(e.getSource() == ch) serialPort.close(); { } if (e.getSource() == a) { b = t.getText(); m.append(b); m.append("\n"); data_out = Integer.parseInt(b); try { outSer.writeByte(data_out); outSer.flush(); } catch(Exception ev) { System.out.println("ERRORE "+ev); } } } //__________________________________________________ ___________ public void serialEvent(SerialPortEvent event) { if(event.getEventType()== SerialPortEvent.DATA_AVAILABLE) { try { while(serialInput.available()>0) { B[0]=(char)serialInput.read(); String s=new String( ;m.append(s); } } catch(Exception e) { System.out.println(e); } } } |
| | |
| | #17 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| primo test OK
oggi ho provato e funziona! dalla mia applicazione in Java è possibile muovere il servo, il servo si muove con un estensione superiore rispetto a quella offerta normalmente dalla ricevente... in sostanza , ho osservato che la normale escursione di un servo si muove tra 50 e 207, invece con l'applicazione da 0 a 255, infatti il servo rotea da un lato all'altro in modo più esteso. bene bene ,,,adesso il prossimo step pilotare più servi contemporaneamente alla prossima... |
| | |
| | #18 (permalink) Top | |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| Java e multiservo
eseguendo una sorta di multiplexing l'applicazione in java adesso pilota 4 servi in modo separato può quindi essere lo spunto per creare una piattaforma per pilotare un aereo .. almeno in forma teorica.. ovviamente dopo aver aquisito i dati del GPS, sensori inerziali, ecc...a dopo e scusate ancora Citazione:
| |
| | |
| | #19 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ecco il firmware
ho dovuto scomodare il registro FSR ... funziona alla grande! ;Questo software riceve dall'applicazione java JRobot sequenze di numeri ; compresi tra 0 e 255. In ordine questi numeri saranno assegnati a ATTESA1, ; ATTESA2, ATTESA3, ATTESA4. Queste tre varibili sono utlizzate in ; BLOCK PULSE, per impartire ad ogni servo la relativa inclinazione. ; ; fausto.giudice@gmail.com ;----------------------------------------------------- PROCESSOR 16F628 RADIX DEC INCLUDE "P16F628.INC" __CONFIG 11110100010000B ; ; __________________________________________________ _____________________________________ ; ATTESA EQU 32 L_COUNT EQU 33 H_COUNT EQU 34 CL EQU 35 ID_SERVO EQU 36 ATTESA1 EQU 41 ATTESA2 EQU 42 ATTESA3 EQU 43 ATTESA4 EQU 44 ; ; __________________________________________________ _____________________________________ ; ; START PROGRAM ; ------------------------------------ ORG 0 ; ; __________________________________________________ _____________________________________ ; ; SET ANALOG/DIGITAL INPUTS PORT A ; ------------------------------------ ; MOVLW 7 MOVWF CMCON ; CMCON=7 set comperators off ; ; __________________________________________________ _____________________________________ ; ; INITIALIZE PORTS ; ------------------------------------ ; movlw b'00000000' ; set up portA movwf PORTA movlw b'00000100' ; RB2(TX)=1 others are 0 movwf PORTB bsf STATUS,RP0 ; RAM PAGE 1 movlw b'11110000' movwf TRISA ; portA all pins input movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output movwf TRISB ; ; __________________________________________________ _____________________________________ ; ; SET UART DEVICE, FOR COMUNICATE SERIAL PORT ; ------------------------------------ ; ; movlw 0x19 ; 0x19 = 9600 bps movwf SPBRG movlw b'00100100' ; brgh = high (2) movwf TXSTA ; enable Async Transmission, set brgh bcf STATUS,RP0 ; RAM PAGE 0 movlw b'10010000' ; enable Async Reception movwf RCSTA ; ; __________________________________________________ _____________________________________ ; ; INIZIALIZE VARIABLES ; ------------------------------------ ; call message MOVLW 100 MOVWF ATTESA1 MOVLW 100 MOVWF ATTESA2 MOVLW 100 MOVWF ATTESA3 MOVLW 100 MOVWF ATTESA4 MOVLW 41 MOVWF ID_SERVO ; INIZIALIZE THE ID_SERVO MOVWF FSR ; THIS IS A POITER AT ARRAY MEMORY OF SERVOS ; ; __________________________________________________ _____________________________________ ; ; PULSE BLOCK ; ------------------------------------ ; LOOP CALL DELAY_20 MOVF ATTESA1,W MOVWF ATTESA BSF PORTA,0 CALL PULSE BCF PORTA,0 MOVF ATTESA2,W MOVWF ATTESA BSF PORTA,1 CALL PULSE BCF PORTA,1 MOVF ATTESA3,W MOVWF ATTESA BSF PORTA,2 CALL PULSE BCF PORTA,2 MOVF ATTESA4,W MOVWF ATTESA BSF PORTA,3 CALL PULSE BCF PORTA,3 ; ; __________________________________________________ _____________________________________ ; ; ; ------------------------------------ ; btfss PIR1,RCIF ; Receive data from Serial Port GOTO LOOP ; MOVF RCREG,W ; If true then load W MOVWF INDF ; load FSR register by INDF MOVF ID_SERVO,W SUBLW 44 btfss STATUS,Z GOTO STEP MOVLW 41 ; INIZIALIZZA TUTTO DACCAPO MOVWF ID_SERVO ; MOVWF FSR ; GOTO LOOP ; TORNA SUL PULSE BLOCK STEP INCF FSR INCF ID_SERVO GOTO LOOP ; ; __________________________________________________ _____________________________________ ; ; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING ; ------------------------------------ ; send movwf TXREG ; send data in W TransWt bsf STATUS,RP0 ; RAM PAGE 1 WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi goto WtHere bcf STATUS,RP0 ; RAM PAGE 0 return ; ; __________________________________________________ _____________________________________ ; ; MESSAGE ; ------------------------------------ ; message movlw '1' call send movlw '6' call send movlw 'F' call send movlw '6' call send movlw '2' call send movlw '8' call send movlw ' ' call send movlw 'R' call send movlw 'e' call send movlw 'a' call send movlw 'd' call send movlw 'y' call send movlw 0x0D ; CR call send movlw 0x0A ; LF call send return ; ; __________________________________________________ _____________________________________ ; ; GENERA UN RITARDO DI 20 mS ; ------------------------------------ ; DELAY_20 movlw 26 movwf H_COUNT movlw 10 movwf L_COUNT decfsz L_COUNT,F goto $-1 decfsz H_COUNT,F goto $-3 RETURN ; ; __________________________________________________ _____________________________________ ; ; GENERA UN RITARDO PROPORZIONALE AL REGISTRO ATTESA ; ------------------------------------ ; ; 900 + 5 * ATTESA = da 900uS se ATTESA è = 0 , a max 2000uS se ATTESA = 200 PULSE movlw 178 ; 1uS | movwf CL ; 1uS | 4uS goto $+1 ; 2uS | goto $+1 ; 2uS | decfsz CL,F ; 1uS | 5uS * (178 - 1) = 885uS goto $-2 ; 2uS | nop ; 1uS movf ATTESA,W ; 1uS movwf CL ; 1uS btfsc STATUS,Z ; 1uS nel caso in cui ATTESA = 0 allora salta alla fine RETURN ; 2uS goto $+1 ; 2uS goto $+1 ; 2uS | decfsz CL,F ; 1uS | 5uS * (ATTESA - 1) = goto $-2 ; 2uS | RETURN END |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| alimentazione pic 16f628 | gungun | Circuiti Elettronici | 6 | 04 settembre 09 01:05 |
| Interfaccia seriale -> notebook senza porta seriale | francyflyer | Simulatori | 4 | 10 marzo 06 18:48 |
| Modulo USART 16F628 | SoldatoSemplice | Circuiti Elettronici | 1 | 06 marzo 06 19:20 |
| Schemi - Regolatore con Pic 16F628 | BaroneRosso | News | 0 | 17 giugno 05 16:07 |
| regolatore di giri con pic 16f628 | fabari | Circuiti Elettronici | 5 | 23 marzo 05 22:02 |