At first word I like to thank for all who helped me with this project .
That project was born by two accidents - first I had lost in air and crash model , second I ordered OSD samples from maxim and when they arrive at evening for fun I worte small software for display some letters on TV .
After that I thought about need for nice , light-weight , small and cheap OSD unit , so that is it .
Project is unter TAPR open hardware licence - so first download and read LICENCE file .
In one word - any production and sale without permition of author is not allowed .
OSD unit must be fully controlled by user regards to showed information , screen interfeace layout and message labels .
As many living projects , must be easly software updated by end user , new or alternate software as well as OSD chip character/semi-graphics also configurable . For that need the comunication USB-uart device is included (called USB cable) .
To meet the cheap requirement , for now are not used any current sensor , the voltage indicators only . In future that can be changed and more sensors can be added (some free inputs are left) . Final price must be around 100$-120$ including all set (OSD unit , GPS module , USB comunication unit) , what is done .
Unit must proper work with any GPS module with any fix update (1-5Hz) and communication baudrate speed automatically detected .
If anyone decide to build the unit by his self , it is also possible , what was prooven by our friend who had printed board only and succesfully finished his device adding all parts and chips .
The hardware base is MAX7456 OSD chip controled by microcontroler MEGA16 by SPI bus , GPS module connected to unit provide all needed information about latitude , longitude, speed , altitude etc. , on that information and saved Home position , the main information like Home-course and Home-distanse is calculated , what help any pilot return home during flight .
I didn't want to occupate any RC channel , so for work OSD do not need any of them (possible use with any 3 and 4 channel sipmle radioTX) , there is only one switch/button on OSD unit used to Home position save , the other function of this botton is to change video mode from NTSC to PAL and PAL to NTSC , this modes are difference with screen grid resolution NTSC-30x12 PAL-30x16 and must correspond with video camera system .
The video mode is saved with first Home position save and OSD start(after power-on) with selcted(last saved) video mode .
All screen layout configurations changes can be done on PC computer and then programed into OSD unit by comunication USB device . Software for this is still in developement - done by HappyKillmore , who did exelent coding job .
Schema and software files are avaliable for download .
Technical data :
- Supply power : 7V-14V (ex. lipol 2S - 3S)
- video voltage measurment range 0-15V (automatically done after connecting OSD supply power)
- engine voltage measurment range 0-30V
- Video signals - standard PAL or NTSC (both working well)
- GPS - any GPS with NMEA - GPGGA and GPRMC protocol with TLL standard TX RX signals (however best results and advantages are with dedicated GPS module working 5Hz update position - all configuration wrote for this module)
- weight : 16 gram (OSD + dedicated GPS)
Functionality :
- easly PC connection for configuration purposes (using hyperterminal or in future dedicated PC program - done)
- no RC channel occupation
- GPS baudrate detection and MTK chipset configuration automaticaly
- autosave home function , configurable depends of seen sat no. , button works independently
- metric or miles/feets(imperial) units configurable
- zero altitude to airfield level - configurable
- cofigurable screen layout
- graphical symbols and fonts table - editable and configurable
- voltages calibration and scaling function and all ADC inputs including alarms triggers (greate or lesss than value)
button function :
- save home position (short click)
- video mode change (NTSC or PAL) press and hold button for about 1 second
- cofiguration mode (pressed when conectiong to power) - possible USB communication with PC
show information DONE :
- latitude (format DDMM.MMMM or DD.DDDDDD can be choosen)
- longitude (format DDMM.MMMM or DD.DDDDDD can be choosen)
- speed (km/h or miles/h can be choosen)
- altitude (meters or feet)
- to-home course (animater arrow or whatever else animation definable by user)
- to-home distance (meters or feet)
- satelite quantity
- video battery voltage (individually scaled and calibrated)
- main battery voltage (individually scaled and calibrated)
- flight timer
- variometer (meters/s or feet/s)
- UTC Time
- UTC Date
- alarms for distance , ADC , atitude , batterys voltages (individually scaled and calibrated)
- 32 static displayed independent graphical-character symbols , configurable possible any graphics build
- 6 additional sensors on ADC channels , each individually calibrated and alarm set , cooperate with any additional sensors (optionaly scaled by opamp) with analog output (RSSI , air pressure, current sensor , themperature , whatever else with analog output)
- after detection 0 speed for configurable X seconds , shows maximal values for altitude , distance , speed , funtion can be off
- frequency meter (RCl input resistor need 220-515ohm in old bard , T0 input new board) , can be scaled for any units by gain as Hz or RPM , cooperate with magnetic or optical sensor - or can be used as frames counter when connected to RC RX output directly
Every displayed information can be placed everywhere on screen layout , can be on or off , have definiable leading character(picture) and ending character(picture)
All configuration is done by PC configuration program wroten by HappyKillomore (greate job)
show information TO DO
- graphical presentation of artifical horizon and pitch
- firmware for cooperation with Ardupilot
- On/Off from RC chanel
- any idas in future
Bootloader is small piece of software in microcontroller for future program and update main software using COM or USB-COM connection with PC .
If you got assembled unit - the bootloader is already programed - so never update OSD by bootloader.hex file
If you build the unit by your self - at first you must program bootloader in to microcontroller using ISP programer . You can use Bascom demo program and LPT with 4 resistors as ISP hardware programer - will do the job exelent .
After that any future firmware updates you can made by USB cable .
For bootloader I choose MegaLoad software as free , exelent working and not taking space in microcontroller's memory (takes 512words -1024 bytes only) . Using this software we are able to update flash and eeprom memory contents in OSD unit using USB cable .
Here are for download the bootloader .hex file , we must program in microcontroller and MegaLoad PC software for communication with OSD unit .
If you have assembled OSD device - the bootloader is already programed inside , so never load bottloader.hex file into OSD as you destroy it (need ISP reprograming) .
Dowload only Megaload software and program only firmware file into flash .
Ostatnio zmieniony przez remzibi 2009-11-05, 19:04, w całości zmieniany 5 razy
The schema of unit are here .
The only difference from assembled unit and schema is that at Vcc input is soldered diode for save the unit in case of opposite conection of + an - of power battery .
File for downolad
Ostatnio zmieniony przez remzibi 2009-04-21, 19:46, w całości zmieniany 1 raz
The USB cable is universal multi use USB-uart TTL standard converter .
It looks like that :
From one side USB connector to PC , from other side signals TX , RX , GND and 5V from usb port .
With that is very immportant to not connect opposite +positive+ and -negative- to OSD unit . To avoid that you can connect only GND and TX RX and supply OSD unit from battery.
There are two types of cables used till now :
OTi (works best with winXP but with Vista also) and
Prolific (works with all systems - OSD firmware update using Megaload software only) - also drivers added in this post
To install - unpack and install correct drivers in correct system before you plug the cable into PC .
After that plug USB cable - the creator of new hardware will install it automatically .
If any problem you have you can install it manually using new hardware creator and show the path for USB cable unpacked files .
Till now the known problems with OTi drivers instalation are with BlueTooth devices drivers instaled on the same PC - especially Bluesolei , so if you will have problems - uninstall BT drivers .
NOTICE FOR OTI cable :
I found two USB cables have swapped blue and brown cables (RX line) . Looks like it is very rare issue but can happend . It is possible that someone already got such bad cable .
So if you have a problem with run USB cable on PC also check the hardware as follow :
AND NOW is VERY IMPORTANT For every one who had/have problem with communication (and ONLY those) , you need check your OTi cable hardware . Open the case(it is easy - gently use screwdriver) and check the cables if they as on the picture - if not , resolder brown and blue one(swap them to GOOD position) to get the proper communication .
Ostatnio zmieniony przez remzibi 2010-09-06, 13:06, w całości zmieniany 4 razy
First we plug USB cable and we see in Window's device menager what number COM port it have .
Then we run MegaLoad update program , we choose porper COM port number and select the transmition speed for 9600 baud . Then we open .hex file with our new software in flash box - if with fash need to be programed eeprom file then open also eeprom file , if not - left eeprm blank .
Press close port button
Now - conect TX RX signals to OSD unit and press open port button
and now you can connect power from USB do not change polarity
you can connect only GND and power-up by battery from Vcc main supply .
After power is connected update starts automatically - after few seconds progres bar will end flash and if exist eeprom and update is done .
You can disconect device and use it on RC model .
If you have assembled OSD device - the bootloader is already programed in it , so never load bottloader.hex file into OSD as you destroy it (need ISP reprograming) .
Dowload only Megaload software and program only firmware file into flash .
Remembre - after every update eeprom is erased so you need to set proper videomode (using button) after every software update
Like that :
Ostatnio zmieniony przez remzibi 2009-06-16, 13:39, w całości zmieniany 7 razy
Almost initial working version named M16 ramki.rar - not reccomended
(two layout with lat , long showed and without )
In this version
- the information on screen are not at borders - because some googles and TV cut the bordes of picture
- show video mode as resolution (30x12 , 30x16)
- short labels of information text
v1_03 (4 layout versions , try to see them all)
- Home bar show fixed
- configuration MTK gps for 3Hz
- timer is zeroed after every press save position botton
V1_05 (4 layout versions , try to see them all)
- GPS MTK for 5Hz and WAAS system configuration
- GPS update speed(5Hz) showed by SoO
- zero altitude after save position
- change button function - short press save position - long press (1s) change video mode
- timer showed from start and zero after save position
Ostatnio zmieniony przez remzibi 2009-05-15, 20:39, w całości zmieniany 2 razy
We have programed device so it is time to start it to work .
First double check all connections , and when you are sure all cables are correct as last connect the power cable .
When you use PC TV card , regular TV powered from AC supply or AC wall adapter remembre to always supply OSD unit from battery.
It is because various devices can have various GND votage and all this will meet in OSD , that can made serious problems - even destroing unit . So always power OSD from battery .
For first run we should connect to TV only to video output - no signal at video in .
Power up connecting to Vcc battery , the OSD logo should be seen on screen .
If so , remove power , now connect GPS unit , it must be connected and proper detected for acces to video mode change buton .
Pressing button will change video mode (resolution) , so video in camera can be connected and if OSD sreeen will lost that means video camera is working in different resolution - so use buton to change video mode .
Save pisition for save video mode and that all .
OSD device is ready for testing on plane , car , boat or whatever you like include space shuttle .
OSD during work can become hot - so for those flying in tropical coutrys or warm summer - here is a very good and extremly effective and cheap cooling system .
Simple electrical copper wire 2,5mm or 1,5mm - soldered as on picture .
Wire cen be outside of canopy or can be screwed to something inside canopy of "flying device" .
IMPORTANT
Thermal plastic shrink on GPS module is very important to prevent it from any machanical cable movement - without it , very easy will brake the connection pads and GPS will be useless - without plastic on GPS module , any scratch on GPS antenna will loose the receiving parameters of all module so will case problems with sat receiving - also prevent against moisture in air .
Plastick on GPS module is very important to keep it in good mechanical condition - never remove it .
Ostatnio zmieniony przez remzibi 2011-07-29, 16:25, w całości zmieniany 10 razy
To be possible custom screen configuration , need of understanding how it is work .
The screen is divided on net where the charcters are writen .The grid is 30x16 with PAL mode nad 30x12 in NTSC mode .
Looks like that:
So when we made configuration we just teel the program where on the screen we want first character(or picture) our information - up left corner is coordinates X,Y (1,1) , bottom right corner is X ,Y (30,16) - remembre that NTSC mode Y must be no more than 12 .
How do we know what mode are currently in use ? - we will see after OSD init logo .
All this config information can be writen i eeprom and then programed with flash by MegaLoad .
Here is a small hex editor when you can edit the eeprom values .
Megaload takes only files in format intell hex .hex and not takes .bin binary files - so in editor choose :
file->export->16 bit intell hex
so after that you have the ready intell hex file format .
Ostatnio zmieniony przez remzibi 2008-11-30, 17:12, w całości zmieniany 2 razy
In OSD software is integrated part for update max7456 character table - so any custom graphical defintions are possible .
This how looks default screen layout .
v1_10 (3 files for flash , eeprom and max7456)
- all function from previouse version are keeped
- custom configurable character shape(2 tables) and screen location for each value
- course to home showed by arrow or any other graphical symbol (can have maximum 16 positions) or standard text bar
- defintion of value symbos like kM/h , M/s in max7456 character table
- Any possible definition of graphical symbols for any value showed on sreen
v1_20 (3 files for flash , eeprom and max7456)
- function of showing actual charactel table from max7456 , that is when you press and hold pressed button and connect the power
- integrated software for update max7456 character table by .mcm file using hyperterminal program set for 38400 baud , run hyperterminal - connect TX RX from USB cable press and hold pressed button and power OSD - in hyperterminal use send as text file and choose yourfile.mcm to send
The logo screen info is also possible to custom write - in this case is " OSD READY for sky conquer "
v1_28 (3 files for flash , eeprom and max7456)
- function of calibrating voltages
- function of alarm set (Vid batt, Eng batt, distance, altitude)
- configuration of vario digital presence (4bit of 3F byte)
- the reason of insuficient space removet function of home-course presence in character mode - remained only graphical mode
- fixed max7456 last character update bug
- some cosmetics in .mcm file
The program for edition of character named factory_characters.rar added .
Ostatnio zmieniony przez remzibi 2009-05-15, 20:39, w całości zmieniany 4 razy
Wysłany: 2008-12-29, 15:30 ALARMS and CALIBRATION - OBSOLETE
After OSD is working , alarms should be set and if neccery voltage calibrations made .
Also if need update of .mcm osd chip file is possible by this way , send .mcm file as text file .
All this must be done using PC computer conected with OSD unit in hyperterminal program .
We open hyperterminal program (win XP) start->programas->accesories->hyperterminal .
Then we type any name for session , we chose proper COM port number (the same as for Megaload) , choose transmition baud rate for 38400 .
Blank terminal window will appear .
Then with connected RX TX GND we power-up OSD unit with pressed button - then we see something like that :
If any problem with communication occures and you do not see this , you can with connected GND only to USB cable , power-up OSD unit with pressed botton and then connect TX RX plug .
CALIBRATION
For calibration voltages type CAL and enter , then using universal multimeter measure voltage on power OSD battery , type this voltage and press enter , decimal point must be dot "." .
Then using cable " + " (poisitive) of engine measurment input tuch the "+" positive battery of power OSD unit - with touched cable type the same voltage and tap enter .
After every type of voltage the unit will measure voltage and confirm it typing the same measured value but with one digit after decimal point , if it is not proper confirmed - the cable is not well connected .
ALARMS
For set alarms type ALARMS and enter .
program will show actual value and wait for typing new one for distance , altitude , video batt, engine batt .
Type values for each time confirm by enter .
This should look like this example :
Kod
CAL
vid:11.42
vid:11.4V
eng:11.42
eng:11.4V
OK
ALARMS
Dist:200
Dist:400
Alt:50
Alt:250
vid:11.0
vid:10.5
eng:11.0
eng:9.2
OK
There are also possible to have access for every cell in eeprom memory for this we use two commands R (read) and W (write) .
To read value type R and enter , then hexadecimal eeprom address and enter - the value of this address will shown .
To write type W and enter , hexadecimal address and enter , hexadecimal value and enter . - it is easy - isn't it ?
Hexadecimal values can be normal or capital letters .
Example of reading and writing:
Kod
R
24
0F
OK
R
70
98
OK
W
24
0E
OK
W
24
0d
OK
R
24
0D
OK
By write in address 24 value 0D instead 0E I remove aim sign one grid point to left , for remove it from dispaly we must put value 00 .
Ostatnio zmieniony przez remzibi 2009-05-15, 20:40, w całości zmieniany 2 razy
Here is picture in BMP to print stickers (in paint to keep dimentions) on any color printer and then put on that plastic tube on OSD , I hope this help to not mist connect any cables during airfield preparation .
There are two sides - so we can stick any one side or both - that brown is button place to press it .
Wysłany: 2009-02-12, 19:28 ALLinONE SOFTWARE for OSD configuration
The latest configuration software done by HappyKillmore , include all previouse function in one porgram .
That incredible job done by HappyKillmore are for download here :
http://www.happykillmore....Setup/Setup.exe
- integtrated firmware updater , include the latest version of OSD firmware i wrote
- integrated layout screen editor
- integrated font editor for any graphic modyfications (lot of options and functions)
- integrated Voltages calibration
- integrated eeprom hex editor
- integrated module for serial communication (used also as terminal)
- integrated GPS emulator for immidate checking live changes applayed to OSD init
Here will be added files for various language translations made by users .
The .cfg file should be copied into Language folder , then new language will be avaliable to choose .
This is for new software version .
French
Ostatnio zmieniony przez remzibi 2009-05-29, 12:47, w całości zmieniany 1 raz
OSD board after face-lifting looks like that :
[URL=http://img19.imageshack.us/my.php?image=s6300953.jpg][IMG]http://img19.imageshack.us/img19/7995/s6300953.th.jpg[/IMG][/URL]
Here is a very good diagram how to made connection in plane .
This is powered by two batterys for separate engine and video systems , this help to keep out noise and gliches form one to other .
Ostatnio zmieniony przez remzibi 2011-09-20, 15:03, w całości zmieniany 7 razy
What if firmware update fail using configuration PC program :
Do not panic - now use Megaload - file .hex is in HEX folder .
Here is example how handle that a very beginer , in that case he wrote a very nice manual - http://www.rcgroups.com/f...4&postcount=625
If you wrote new firmware by Megaload , you do not must to do that again in configuration program - simply add(wrote) only new BIN file , and that is - reapairing process is finished .
Megaload repalce fimware update when 1_xx.hex (firmare file) do not write propertly in your system , that is all . If OSD respond with v1.xx logo - then everything is OK .
Since this moment OSD works and using configuration program we add new fonts (if needed) .mcm and new BIN with our new layout and ADC settings .
For play and funny F-16 HUD screen layout example .
Ostatnio zmieniony przez remzibi 2011-03-07, 12:27, w całości zmieniany 5 razy
Wysłany: 2009-06-18, 15:01 ADC optional use and connection
That for advanced in electronic users .
As addition I like to show possible input connections , depends of how we use ADC , possible a variouse conections to meet requirement .
Usually at input can be used shortcut or R resistor or L inductance (4,7uH to 22uH) , and as block to GND , C (100nF) capacitor , or R/R resistor divider - all depend of how we want to use each ADC channel .
In new board input pins and each ADC input have also separate pads for varuiouse components use :
in old board :
Ostatnio zmieniony przez remzibi 2011-07-29, 16:23, w całości zmieniany 5 razy
Some more information for advanced electronics ONLY about connections with RC RX and external sensors .
If do not know much about soldering and electronic , DO NOT that - ask someone experienced or us OSD as is from the box .
All this is for aviod any glitches and niose to both sides RC RX - OSD .
So for clear about proper connections ther are samples with pictures .
First of all samples and photos are made for new board design but they are working the same way on older one .
How to connect any input using C and inductor(coil) L to cancel any possible noises :
Here how to made an lowpass filter at any ADC input to avoid any glitches and noise cancel :
Here is the sample connection of inputs I1 and I2 . I1 is as current sensor input and connected PAD to ADC6 (PAD A6) , I2 is a RSSI input working with ADC2 (PAD A2) :
Using at OSD all this elements you will made an PI filter in fact - so in/out noises and glithes will be canceled as well .
Here are also some photos of all pin inputs prepared for any use as well as all ADC inputs prepared to connection of any kind analog inputs in signal range 0-5V .
Ostatnio zmieniony przez remzibi 2011-07-29, 16:23, w całości zmieniany 3 razy
Solution is to just remove arrow to one or two spaces right .
Or in vario (in front of arrow) choose last char address Hx00 , not any other empty space character , if (front or end) character Hx00 is choosen then is not displayed at all (the same leading character) , in other case is displayed space (emty invisible character) .
Normally , after every information , is displayed ending space - in case of end character is other than Hx00 , we have two spaces at end - covering any next information and posibly made flash effect (or glitch) , if there are more digits so spaces moving right (for this is slider in PC software to check the max lenght information on screen and add space in mind) .
So after every information is one space (exept frequency meter - 4 spaces because a lot digits in RPM possible) , there are not any front or end spaces with graphical objects X Graphic .
So if there must be used also alarm triger in information , so if we want to see it , leading character must be visible (not space) to see first char is flashing - or it must be Hx00 to be not displayed so then first digit of info will flash - if leading char will be choosen an space but not Hx00 then will flash something invisible , so alarm will be not seen .
So , when we are designing sreen layout - we must know that empty information can cover by his invisibility others informations on screen - so if we do not use an info - simply we must mark it as invisible in config panel - so such not needed information will not be displayed at all (even will not be displayed empty spaces - invisbility covering other characters or infos) .
The screen shot show the spaces issue :
If vario will display 2 digits all arrow will be covered and made flash(glitch) effect .
Ostatnio zmieniony przez remzibi 2009-08-12, 15:02, w całości zmieniany 1 raz
Wysłany: 2009-08-27, 18:23 OSD working with external devices
Fortunate community of this OSD owners are growing and growing , including FPV flyers but not only , even some universitis and high schools for experimental use and other projects adaptations as well as some home designers .
So lastly I have many additional questions similar to like that :
I like to use OSD in another use -
on combant plane (with graphics and sigt only to aim enemy) ,
on boat ,
on U-boat ,
on RC-car ,
on real car with recording ,
on bicykle ,
on motorbike as parameter monitor ,
on my Video monitoring system cooperate with PC ,
on my personal Videos information stamp ,
on Video as frames counter (whatever that menas) ,
on my own top secret project , so can not tell you about ,
etc. etc. and many more .
I do not need to use GPS - I do not need it , I like the analog inputs use only - like Voltages , external sensors and possibly RPM meter .
OSD is cheapper without GPS .
So that is OK - here is the firmware for beta testing for everyones want it to test - working without GPS module at all .
All other advantages are remain without change .
Button work only as Video mode changer and save (something like save home) function saving Video mode and reseting timer at any moment .
Inviting logo will gone after 5 seconds so not any save needed for proper work .
So after firmware update all information regarding GPS data are not displayed .
Other like Timer , GMT date (will be zero so made it invisible) , GMT time (will be zero so made it invisible) , Frequency meter(RPM meter) , ADC , and graphical object are displayed without changes - all can be configurable (scaling , alarms etc.) in usual way using PC configuration program . Character editor and all rest - works in usual way .
Free UART(COM) port is set to default 38400 baud rate receiving and can be used to display on OSD layout absolutely everything we want or need to display at any location using external device - if we want to connect any .
Now for those programerrs who want to display anything using that port and their device .
So we can deliver information to display at location x,y looks like that :
[leading character][text message][ending character][ending space]
ending space is displayed always after mesasage.
String to OSD should look like that :
"$MXXYYLLEEabcd"
must be end by enter character - CR LF linefeed and carriage return .
$M - means that it is meassage to display (M must be uppercase)
XX - is a x coordinate variable on screen , must be hex value as string (chars) ex."ab"
YY - is a y coordinate variable on screen , must be hex value as string (chars) ex."ba"
LL - is leading character hex value from font table as string (chars) ex. "d9"
EE - is ending character hex value from font table as string (chars) ex. "00"
abcd - is a "text message" to dispalay (letters from font table) as string (chars)
when LL or EE is Hx00 (zeros) - then will be not displayed at all
when text message is "" [empty] then also will be not displayed
So string to OSD can be like that in C arduino sample
Kod
serial.println("$M050a4a4bI like that")
so at location x=05 y=10 will be displaed this :
Kod
<I like that>
as you see LL is 4a it means [<] char and EE is 4b it means [>] char .
or can be done like this way:
Kod
serial.print("$M") //header for message
serial.print("050a") //x and y coordinates
serial.print("4a4b") // leading and ending characters(graphics)
serial.println("I like that") //message with LR CR ends string
This is exactly how is working this function in OSD now .
As advantage of this system when we define most significant bit of XX coordinate for 1 then we choose small fonts for text message display (only capital letters) - when is 0 then default big letters are displayed from characters table (capital and small letters) .
Kod
XX |= (1<<7) // set 7 bit for small characters
XX &= ~(1<<7) //reset 7 bit for big characters
To be possible custom screen configuration , need of understanding how it is work .
The screen is divided on net where the charcters are writen .The grid is 30x16 with PAL mode nad 30x12 in NTSC mode .
Looks like that:
So when we made configuration we just teel the program where on the screen we want first character(or graphic) of our information - up left corner is coordinates X,Y (1,1) , bottom right corner is X ,Y (30,16) - remembre that NTSC mode Y must be no more than 12 .
How do we know what mode are currently in use ? - we will see after OSD init logo .
I hope that this firmware will help for many peaples doing his own project and will made poor man's OSD more open to world , also be more universal to variouse usage in many other project , not only flying platform .
-------
I foloowed of mmormota(Hungary) idea about add to OSD firmware ability to display any custom information delivered by RX input at the same baud rate with GPS module .
So if anyone have external device with GPS and retransmitiing GPRMC GPGGA messages , OSD can be used in usuall way - inluding autodetecting baud rate .
But also in middle of NMEA messages is possible to put custoom dispaly instruction - all described detaily in post above .
So here is the beta version of firmaware 1_60 - mostly for mmormota to test with ardupilot software .
It is working exactly as remzibi OSD (including GPS configuration commands sent at begining by TX line after baud rate detection) plus ability to display any custom oinformation delivered by UART(com port) in the middel of NMEA messages , format described in post above :
"$MXXYYLLEEabc"
So with this solution there are a bit solved problem of insufficient space in OSD's chip . maybe will be possible also displaynig artifical horizon and pitch using characters E0 to E7 from character-font table .
---------------------------
Small tip when you use "Your Device " beteween GPS and OSD , in case when NMEA strings are retransmitted by "Your Device" :
[GPS]->[Your Device]->[OSD]
The OSD's NMEA parsing function is wrote in such way that you need only to sent header (ex. $GPGGA) position information , useful data and some comas - you do not need to send any checksum or whatever .
you can short it like that :
$GPRMC,064951.000,,,,,,0.036,165.48,260406,,
- as you see only (UTC time , speed , course , date) - but remembre about comas - the quantity of comas must be the same till date .
Or if not used UTC-time and UTC-date this is also OK (only speed and course) :
$GPRMC,,,,,,,0.036,165.48,,,
From $GPGGA OSD takes position , fix info , sat quantity and altitude - so intead of this :
you can short string as this :
$GPGGA,,2307.125647,N,12016.443856,E,1,8,,39.944,,
- also remembre about comas quantity untill altitude
As described above - you can send to OSD between $GPGGA and $GPRMC strings also $M.......... string - this is for display on OSD anything you need at any time and anywhere on display layout .
-----------------------------
Here are some pictures of possible GPS connection with external device and OSD .
Ostatnio zmieniony przez remzibi 2011-03-07, 12:42, w całości zmieniany 6 razy
Wysłany: 2010-06-07, 19:19 OSD cooperation with external devices - continue
Finished OSD firmware for cooperation with Ardupilot by $A - protocol for navigation information and $I - protocol for fast artifical horizon , as well as with any other external devices .
I wrote PC testing software named IMU_sim - so was able to finish that firmware .
In new firmware - XGraphic objects and AH will be seen after SaveHome (send $SH or press button) - so many time for menus or initial custom messages .
Added finaly layout $L0 for OSD off and $L1 for OSD on - working greate .
This preparation for next verion of selective on-off each "object" - but is still on my head only as idea .
At IMU_Sim v1.01 - added some inertion of movement - very nice to play
Added sliders for $A objects and added predefinitions of function commands for ease send.
Connection OSD - PC by USB-UART cable .
Supported messages from any external device must have this format :
2 3 4 5 6 7 8 9 10 11
"$A,lat,lng,numSV,[dist],alt,speed,course,[azimuth],gpsDate,gpsTime," CR LF
Notice comas must be after message and at end of it
[dist] and [azimuth] can be empty
Lat and lon format as float ex. "-121.123456"
2 3
"$I,roll,pitch," CR LF
Support graphical artifical horizon and pitch presentation , roll and pitch as integer type as degrees (-180,180)
Artifical horizon will automatically move one line down at PAL video system to keep it at middle of screen for NTSC and PAL cameras system
"$SH"CRLF - will made save-home in OSD (save initial position to counting)
"$CLS"CRLF - this message will clean screen of OSD
NOT every minute screen cleaning as in regular OSD
"$L0" CRLF - this will made OFF OSD's layout
"$L1" CRLF - this will made ON OSD's layout
"$MXXYYLLEEabc"CRLF
ability to display any custom information delivered by UART(com port) in the middle of other messages , format described above .
Ostatnio zmieniony przez remzibi 2010-09-06, 13:10, w całości zmieniany 2 razy
Wysłany: 2010-06-07, 19:47 T0 as frequency meter,temperature,current sensor at any ADC
Frequency meter with gain (scaling abilty) . For this can be used T0 (new boards design 1.1 and 1.2) input (or RCL input old board-must be soldered SMD resistor about 220ohm-512ohm) .
Frequency meter can be used with magnetic Hall's effect sensor or optical sensor with any mechanical sets . Can be scaled ad Hz or RPM (gain=60) or whatever .
If you have more magnets on axis on one turn (ex. 4) - for scale as Hz made gain = 1/4 = 0,25 .
Also can be used as RX frames counter when connected to any empty RX output (50Hz output from T9X TX for example) - as percentage gain=2 ,
or can be connected to any flashing LED in 2,4GHz receiver to see the receiver range condition or LED flash indication .
As main sensors can be used optical or Hall effect sensors . Those Hall sensors are easy to find out at old HDD FDD CD (near motor) or whatever PC funs with RPM measure ability (yellow wire) .
Typical Hall sensor have open collector output - so it is OK bacause the T0 input have internally pullup to Vcc .
Typical Hall sensor looks like that
And example how to made an exelent Hall sensor from old PC fan .
IMPORTANT - check your fun chip datasheet as some of them have another outputs and works in different ways .
First we make pieces from fan .
Thare is already diode on Vcc so any opposite connection is not danger .
Then instead of one coil - we put one resistor 50-75ohm - that works the best way (do not look at picture is 150 but is too much - can be two of them paralel) .
On OSD (new board type) I used GND near Video input , 5V - red cable , signal -white cable connected to T0
(in old board it is RCl input with resistor SMD about 220ohm but can be just shortcut) .
http://www.rcgroups.com/f...0&postcount=799
Such Hall sensor works with any moving magnet to RPM or Hz measurment or with any fun rotor to measure for example air speed after scaling (using gain) .
---------------------------
Temperature measurment .
Similar connection is for temperature sensor - it need 5V , GND and signal for any free ADC input - use linear sensors , one of them is LM35 - it is linear temperature sensor working very nice with OSD at any ADC calibrated for temperature indication .
For example temperature sensor LM35DZ working since 0 to 100 Celsius degree lineary .
So for 0 C is 0V and for 100C is 1V , change of 1 C is change of 0,01V .
So calibration is very easy , simply measure actual voltage on sensor - for exaple 0,28V (280mV) means 28 C degree , so now only measure ADC value and count gain to show 28C - that all .
Or put at ADC input 1V - then divide ADC value by 100 - resul is gain - then after sensor connection everything is calibrated .
--------------------
Current sensor connection - in fact is easy part .
FIRST at all we must to obtain if our current sensor need 5V supply for proper work or do not need 5V as it is supplayed from measured battery already .
For example most Allegro sensors
need 5V supply taken from OSD .
There are some of sensor boards already powered by small 5V stabilizer(LDO) near Allegro current sensor on the same sensor board .
So if our sensor need 5V we must made a 5V output and GND must be also connected and Signal from sensor to ADC6 input - so 3 wires must be prepared Signal , 5V , GND .
or mmormota's 1$ DIY sensor http://www.rcgroups.com/f...9&postcount=814
sensor do not need 5V supply as they are already powered by measured battery . In fact all this sensors can be done as DIY using any rail-to-rail op-amp chip - Flytron put his shema on web side , the same Pitlab solutin .
So if the sensors do not need 5V - we must prepare only two wires Signal (to ADC6) and GND .
About GND - if we use ENG'ine voltage measurment input - so we have already connected GND wire [or if we have connected externally GND of Video and Main(ENGine) battery] - so then we do not need to double made GND connection for current sensor - in this case we connect ONLY Signal wire to ADC6 (current sensor input) .
In case of need 5V for sensor , also 5V and Signal as two wires to OSD .
Calibration in any case is the same - we assume that at zero current - zero ADC6 value is readed (exept the sensor give small value at zero Amper - so use it as minimal value) .
Then we put some known current for example 10A(measured paralley by multimeter) - and we read ADC value of ADC6(pooling ADC in PC software) for this 10A - the we scale this ADC6 value by "gain" to show at screen 10A as proper current value - that all .
As additional information - current sensor can be connected to any free ADC input - but only when connected at ADC6 input will possible to show mAh information as ADC7 virtual .
So to OSD we can connect more thatn one current sensor but mAh (ADC7 virtual) battery capacity will be possible to show only at ADC6 one .
--------------------
How to add external switch (tact switch) , as many times OSD is hiden inside of plane so access for button is limited .
This button (switch) is working beteween uC pin and GND - so easiest way is to solder cable to button "hot pin" and simply switch it to GND for button proper work .
Or if we want made an removable switch , here is picture how to add reset button from old PC case working as external button . Connection is simple , we use an unused pin connected to "hot" pin of button .
Ostatnio zmieniony przez remzibi 2011-07-29, 16:22, w całości zmieniany 12 razy
Wysłany: 2011-09-27, 11:35 Hardware tips , problems and solutions
GPS have long time for lock of satellites .
Usually the GPS problems are cause because of 5V (sometime12V) cameras jaming by step-up DC/DC converters .
Sometime by bad quality of supply voltage .
Sometime by Video TX (changing channel usually help) .
Sometime by metal pars near or under of GPS module somehow covering or suppressing signal (check if GPS looks at sky by proper side) .
Sometime by other equipment .
To obtain what happend the best is to connect only OSD and GPS directly to any monitor or TV at open space - then check satellites lock time . If still bad contact to me .
Then adding one by one rest of equipment (camera , video TX etc.) to see what is the jaming source .
Many confirmed cases of bad GPS work was because of cameras jaming - changing for other camera type solved problem.
About the backup battery for GPS - I made some experiments and when the whather is bad , battery is not helping a much in satellites obtain .
If condition are good - battery help - keep 6 sats after 5 seconds - but without battery GPS keep 7 sats within 50 seconds in the same good conditions .
Here is also very good tip for increasing GPS sensivity , this was checked by users with success on many platforms as quadro planes and others (even boat) .
We use alu tape or plate about 40x40mm , and place it under GPS module .
Alu plate is not grounded .
So , at platform where was a lot of jaming and glitches because of all electronic was packed in very small space as quadro , GPS hold only 4-5 sats after some minutes , what is a very bad result .
Now it detect at could start about 7-8 satelites within one minute (about 40-50 seconds) .
That means this modyfication rapidly improve GPS sansivity and suppress glitches.
Before mod :
After mod :
At plane :
---------------------------------
Well , I must write few words about the possible hardware problems of OSD .
It is hard to belive but most returns for service/repairing are with problem of simply changed PAL-NTSC or oppoosite . Isn't it funny ? .
Losing time and money for deliverys for reason of changed Video system accidentaly holding presed too long red button .
This issue I is fixed since 1.69 software version - when the time for Video system change is 2 seconds (or more) - not one . I hope that this will solve this funny problem .
Another very seldom problem is burned diode 1n4148 at supply power input - to solve - measure voltage at GND and 12V pad - must be about 0,8V less than at power cord (red socket) . Simply replace the diode . In board 1.2 ver you can put bigger diode at bottom layer of board - there are pads for it already designed .
Another offten seriouse returns for service/repair reason burned diode 1n4148 (bottom layer) at GPS power supply output . Some units had this because when somone playing with OSD and in any case will short or whatever put wrong to GPS pinout - this diode have to burn as diode is also the fuse (100mA limit) - when burned that is OK .
To check the situation please measure the voltage when GPS is connected at pins GND and Vcc (for GPS) - it must be around 4,2V - if it is less or zero - so diode must be replaced to fix OSD unit (fix supply for GPS module) . You can use any shape (1204 , minimelf etc.) diode 1n4148 or whatever similar Si diode .
The GPS diode showed on picture , most of you can repalce it by your self .
Another offten problem is when at ENG input will be connected opposite side positive and negative of Engine Battery when GND of both batterys are connected (Main battery and Video battery) .
In this case always the Inductance is burned ant GND side of ENG input at v1.1 board or a small trace is burned at board v1.2 . It is OK - because they work as fuse - so that is normal in such case .
Solution - remove burned inductance - and use tiny wire to shordcut those two pads - reconnect pads on board to made connection .
Those GND pads circled red on picture .
Problem of USB cables - it happend when tiny cables are brolken near the black socket connector (that for OSD side) - to solve this remove golden connector from black case and sloder the cable to it to restore connection .
Do not draw them out holding cable (will broke) - but gently push them out using small srewdriver .
When you have driver problems under win7 64bit - you can run virtual machine with winXP on your PC from Microsoft .
here is the link http://www.microsoft.com/...pc/default.aspx
That is general solution for any driver-software problems under 64bit win systems .
Fortunate till now there are not any more seriouse damges of OSD units noticed . It is probably because of fuses described above .
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum