Pages: 1 ... 3 4 [5]   Go Down
Author Topic: How to transmit data underwater?  (Read 10963 times)
0 Members and 1 Guest are viewing this topic.
United Kingdom
Offline Offline
Tesla Member
***
Karma: 224
Posts: 6616
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Unfortunately i have not written any code regarding data to bit conversion so i do not know what is possible at this point. However if the arduino is only transmitting numbers i assume i should easily be able to do so in fewer bits. For the transducer to rotate and transmit i will need to send sets of data (pressure, temperature, orientation...) in 1/18 of a second. Would it be good to separate sets of data with a third frequency to avoid misappropriation on the receivers part? Something like 190.5 kHz, 200 kHz, and 210.5 kHz with 190.5 as the error check frequency?

Concentrate on getting some simple data transfer working. When you have done that, you can test how robust it is and try high baud rates and/or different encoding methods. I would keep it simple and use FSK with 2 frequencies and standard serial asynch protocol to start with. That way, you can feed the output of the receiver into the RxData pin and have the mcu handle the synchronisation.

Later on, you can try using 4 frequencies to get double the bit rate, but the decoding will be more complicated.
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay, i will go with modulation by the FSK method using a two frequency shift.

I am confused about the Baud rate. Correct me if i am wrong but if i have 1 to 1 ratio of bits to baud and i want a rate of 200 baud or 200 cycles/bit then with a frequency of 200 kHz i can transmit 1000 bits/second. right?
Logged

Ontario
Offline Offline
God Member
*****
Karma: 25
Posts: 882
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Baud is about how often you shift the modulation from one state to another, and if 200 cycles is enough for the receiver to reliably lock on to the signal, then this defined your baud rate -- you can sift frequencies up to  1,000 times per second -- 1,000 baud.  A modulation scheme may have less than one or more than one bit encoded in each modulation shift.  A good, reliable scheme to use is Manchester Phase Encoding, which encodes one  bit for every two shifts in frequency - 0.5 bits/baud.  Async serial will put 8 bits onto 10 bauds -- 0.8 bits/baud.  To get more than one bit/baud you will need more than 2 frequencies or use some other modulation, like AM or PSK, or a combination.  This sort of thing is something you would tackle AFTER getting the basic 2-frequency or on-off-keying system working.  Personally, I would try for on-off keying with just one frequency first.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Below are both my transmitter and Receiver schematics. The transmitter schematic includes a MIC4429 which has the same package as the TC4429, so it will be interchangeable on the PCB with the MIC4429 if i don't use the MIC4429. I used a B82133 since it has an inductance of between 1 and 420 uH.

I will be broadcasting at 200 baud and so should be able to us the FT232. I hope this is a low enough baud to prevent multipath interference. I figure that it would be best to adjust R13 via trial and error. 

Let me know if you see anything that could use adjusting. Thanks!



Logged

United Kingdom
Offline Offline
Tesla Member
***
Karma: 224
Posts: 6616
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The circuit looks OK to me, although I haven't checked all of your component values. However, you haven't specified the value of the inductor in the transmitter, and the capacitor value of 0.158uF looks rather high. I would go for something like 160uH and 3.9nF, which resonates at 201.5KHz.

You will need to get the high and low frequencies the right way round for the async signal to be the right polarity for the FTDI chip.

10M is a rather large value for R13. I think you may need a smaller value for better noise immunity, in the region of 200K to 1M.
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

United Kingdom
Offline Offline
Tesla Member
***
Karma: 224
Posts: 6616
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

PS - Transducer-2 doesn't need to be connected to +12v, I would connect it to ground instead.
Logged

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

At the moment i have shifted my focus to building a CNC machine. I Figured it would be very helpful in all aspects of my project, for one circuit board "etching". I plan to sometime in the near future build the schematics that we have put together. Do you think this would be a good idea or should i iron out any other details other then the last corrections to the schematics.

As a summary i will be broadcasting at 200 baud with a center frequency of 200 kHz which has been set the various Caps and resistors. I plan to start by using a FKS method of turning one frequency on and off. The Receiver will attach to my computer via USB. The transmitter will attach to a 12 VDC car battery and to the arduino. 

Question: Do you know of any free software like visual studious which i could use to display the data being received?
Logged

Ontario
Offline Offline
God Member
*****
Karma: 25
Posts: 882
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I plan to start by using a FKS method of turning one frequency on and off.

Turning one frequency on/off would normally be referred to as "on-off keying" or OOK.  FSK is "frequency shift keying" which would involve multiple frequencies.

For tools to help debug or diagnose encoding, I would recommend a logic analyzer -- something simple like a bus pirate would be fine.
http://dangerousprototypes.com/2009/11/03/bus-pirate-logic-analyzer-mode/

If you will modulate plain async serial onto the signal, either a bus pirate or Sump will have a usable decoder.
http://www.sump.org/projects/analyzer/client/

Although I would recommend using VirtiualWire as an excellently suited encoding scheme
I do not believe there are any pre-built logic analyzer tools for debugging a virtual wire link.
http://www.pjrc.com/teensy/td_libs_VirtualWire.html
Logged

Pages: 1 ... 3 4 [5]   Go Up
Jump to: