The Ladder Line https://www.theladderline.com/ en Amateur Radio License Map https://www.theladderline.com/node/10780 <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Amateur Radio License Map</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span property="schema:dateCreated" content="2019-02-23T20:50:29+00:00" class="field field--name-created field--type-created field--label-hidden">Sat, 02/23/2019 - 16:50</span> Sat, 23 Feb 2019 20:50:29 +0000 admin 10780 at https://www.theladderline.com https://www.theladderline.com/node/10780#comments Migrated to Drupal 8 https://www.theladderline.com/node/10777 <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Migrated to Drupal 8</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="">admin</span></span> <span property="schema:dateCreated" content="2015-09-09T01:22:32+00:00" class="field field--name-created field--type-created field--label-hidden">Tue, 09/08/2015 - 22:22</span> Wed, 09 Sep 2015 01:22:32 +0000 admin 10777 at https://www.theladderline.com https://www.theladderline.com/node/10777#comments Drupal | Multiple authors for an article and Views with one to many relationships. Part two https://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-two <span class="field field--name-title field--type-string field--label-hidden">Drupal | Multiple authors for an article and Views with one to many relationships. Part two</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> In <a href="http://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-one">Part one</a> I described the challenge of creating a view which displays a list of Articles (nodes) which have a multi-value reference field pointing to one or more Writers / Authors (users). We want each article to be listed only once regardless of how many writers it has and we want several fields from the related writers displayed below the article title etc.</p> <p> In more general terms, we want a view with a one to many relationship to display the  parent data one row at a time along with a collection of related child rows. The pager must be related to the parent rows.</p> <p> I solved this problem a couple of years ago with a Drupal 6 site by writing my own module which used SQL queries to directly query the database. I did this on two queries. The first query retrieved the page of articles only. My PHP code then looped through those results collecting the nids (node ids). The second query retrieved the writers for those nodes. The SQL included WHERE n.nid IN(...). Inside the parentheses was a comma separated list of nids. PHP code then associated the returned users with nodes returned in the first query based on the nid. The combined data was outputed with a theme template. I like that way of retrieving the data. It's clean, logical and is easy to optimize with good use of indexes etc. I've used that technique in many non-Drupal and non-PHP applications.</p> <p> Now I am creating a Drupal 7 site with the same requirement. When my attempts with views described in part one failed I started several times down the same path of writing my own module but stopped every time because it just seemed like a bad idea. I really wanted to use Views because it's such an incredible module. If at all possible, I wanted to avoid accessing the database with my own SQL. The Drupal 7 schema is more complex than Drupal 6 so there is a greater possiblity of getting it wrong. Views knows how to access the database and comes with lots of other flexibility.</p> <p> Then it struck me. I could do the same sort of thing as I did with my Drupal 6 module but using Views for the queries. The solution is really quite simple. It requires some code in a hook implementation and a custom Views template.</p> <p> I made two views. Both are primarily based on nodes (i.e., <em>Content</em> on that first wizard page). Within the view, they both <em>Show</em> <em>Fields</em> rather than <em>Content</em>.</p> <p> The first or "parent" view does not have a relationship to the writers. It just returns the fields we want from the Articles. There is no duplication problem because it does not have a one to many relationship with anything. The pager works correctly. This view has a <em>Page</em> display.</p> <p> The other view also starts with nodes but it does have a relationship defined to the users representing the writers. The only field we return from the Articles is nid. We include the first name, last name, image and any other user defined fields we want from the Writer / user. This query may of course return multiple writers with the same nid but that's okay. It has no pager and is not defined for a page or a block so it only has the <em>Master</em> display. The only filter it has that really matters is a contextual filter by nid which allows multiple values. It probably also makes good security sense to also have fixed filters for the usual stuff like content type and published etc.</p> <p> The key to all this is merging the results. That's where we need some code. <a href="http://api.drupal.org/api/views/views.api.php/function/hook_views_post_execute/7">hook_views_post_execute</a> seems to be a good place to merge the results. I put this in my module called views_demo</p> <hr /><p> function views_demo_views_post_execute(&amp;$view) {</p> <p>   // my view is called articles_list<br />   // process it if we're not editing it and the result array is not empty</p> <p>   if ($view-&gt;name == 'articles_list' &amp;&amp; !$view-&gt;editing &amp;&amp; $view-&gt;result) {</p> <p>    // build the array $nids to use as a quick way of looking up the row in<br />    // $view-&gt;result in nid</p> <p>     $nids = array();<br />     $idx = 0;<br />     <br />     foreach($view-&gt;result as $row) {<br />       $nids[$row-&gt;nid] = $idx;<br />       $row-&gt;writers = array();<br />       $idx++;<br />     }</p> <p>    // the other view is called article_writers<br />    // call it with a parameter of a comma separated list of nids</p> <p>     $params = implode(',', array_keys($nids));<br />     $writers = views_get_view_result('article_writers', null, $params);<br />     <br />     foreach($writers as $writer) {<br />       $idx = $nids[$writer-&gt;nid];</p> <p>       // attach the writers to the correct node.<br />       $view-&gt;result[$idx]-&gt;writers[] = $writer;<br />     }<br />   }<br /> }</p> <hr /><p> The data returned by a view is returned in $view-&gt;result which is an array of objects, one for each item or row. <a href="http://api.drupal.org/api/views/views.module/function/views_get_view_result/7">views_get_view_result</a> runs a view and returns the result in an array of objects similar to $view-&gt;result. I guess the other stuff in $view gets added later. In the code above, we add an extra property to each row in $view-&gt;result. That property is an array of zero or more writers.</p> <p> After executing that code an article row in $view-&gt;result which has two writers looks like this.</p> <p> <img alt="" src="/sites/default/files/result1.png" style="width: 521px; height: 579px;" /></p> <p> The writer data that my code has inserted is not going to magically appear on the page. For that we need to customize the view's <em>Row style output</em> template<em>.</em> In my case it means copying views-view-fields.tpl.php from the Views module to views-view-fields--articles-list.tpl.php in my theme. It ended up like this:</p> <p> &lt;?php /* get the writers array */<br /> $writers = $view-&gt;result[$view-&gt;row_index]-&gt;writers;<br /> ?&gt;</p> <p> &lt;div&gt;<br /> &lt;?php print $fields['title']-&gt;content; ?&gt; &lt;?php print $fields['created']-&gt;content; ?&gt;<br /> &lt;/div&gt;<br /> &lt;?php print $fields['body']-&gt;content; ?&gt;<br /> &lt;div class="clearfix"&gt;<br /> &lt;?php foreach($writers as $writer): ?&gt;<br /> &lt;div class="writer"&gt;<br /> &lt;a href="/user/&lt;?php print $writer-&gt;users_field_data_field_writers_uid; ?&gt;"&gt;&lt;?php print render($writer-&gt;field_field_image[0]['rendered']); ?&gt;&lt;/a&gt;<br /> &lt;?php print render($writer-&gt;field_field_first_name[0]['rendered']); ?&gt; &lt;?php print render($writer-&gt;field_field_last_name[0]['rendered']); ?&gt;<br /> &lt;/div&gt;<br /> &lt;?php endforeach; ?&gt;<br /> &lt;/div&gt;</p> <p> The fields from the articles view appear in the $fields collection which is the usual place where the template reads it but the data I inserted from the writers view is still where I put it in the items of $view-&gt;result.</p> <p> The $view variable is available in the row style template. Luckily, the property $view-&gt;row_index tells us which row we are displaying. That allows me to get the writers array in the first line of code. As you can see from the krumo output above, the writer fields contain a render array. That's convenient because code like this outputs it correctly.</p> <p> print render($writer-&gt;field_field_image[0]['rendered']);</p> <h2>  </h2> <h2> Some problems, opportunies and final thoughts</h2> <p> Well, that's about it. I'm quite happy with how it works. I have all the flexibilty of views along with an efficient (IMHO) non-klugy way of getting the data.</p> <p> One potential issue is that the data from the second view is only in a convenient ready to print format for user defined fields (i.e, "CCK" type fields) of the entity. Those fields have a nice render array ready to process with the render function. The standard fields on an object do not provide that. I discovered that when I initially used the standard user <em>Picture</em> for a user. All I get from views_get_view_result() for that field from is the file id. I assume Views does its magic later before the data would normally appear in the $fields array in the row style template. I "fixed" this problem by defining an <em>Image</em> field and using that instead. I think the user <em>Picture</em> is kind of a legacy feature these days anyway. In my production site, I don't really have fields defined in User. I'm using the <a href="http://drupal.org/project/profile2">Profile2</a> module and my writers' images and other data are fields defined in a profile. That means my second view has two relationships, one to the writer and another to the profile but the concept is the same.</p> <p> It would be nice if there was a way to really merge the results seamlessly so that the writer data ends up as a array which is one 'field' in the $fields array in the template. I haven't dug into it further to try to do that or know if it's even possible.</p> <p> It seems like it would be possible to write a module to do all this in a generic way. I can visualize an admin page where you tell it what view is to be used for the "parent" data and then define one or more "child" views and what fields to use for the relationship. I may have a go at it if and when time permits.</p> <p> I just found the <a href="http://drupal.org/project/views_field_view">views_field_view</a> module. I haven't tried it but it looks good and I think it can achieve the same result. The only issue I see is one of efficiency and performance. I assume it runs the second "field view" once for every row of the main view. That's got to be quite a performance hit if the page has lots of items. But... with good caching, especially with anonymous users so the page caching works, maybe that's not such an issue. I'd prefer to get all the child records with one database query.</p> <p> Thanks for any feedback.</p> <p> <a href="http://en.wikipedia.org/wiki/73_%28number%29#In_other_fields">73</a><br /> Ross</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sun, 06/03/2012 - 16:58</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/7" hreflang="en">Drupal</a></div> </div> </div> Sun, 03 Jun 2012 19:58:05 +0000 Ross 10775 at https://www.theladderline.com https://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-two#comments Drupal | Multiple authors for an article and Views with one to many relationships. Part one https://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-one <span class="field field--name-title field--type-string field--label-hidden">Drupal | Multiple authors for an article and Views with one to many relationships. Part one</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> I know this is supposed to be a ham radio blog but I'm going to switch channels to Drupal for a moment.</p> <p> I'd like to share my solution to a problem which I've encountered several times. Specifically, it is how to have more than one author for an article and display a list of articles using Views which shows the authors for each article in a natural way. More generally its a technique to merge the output of two views into one where there is a one to many or parent to child type relationship.</p> <p> This is not intended as to be exact "how to" instructions but more of a general guide and me just throwing some ideas around. You'll need to know a bit about Views and some code for my solution to make sense.</p> <p> Please let me know if I'm missing an easier way of doing this. All this relates to Drupal 7. I just haven't got around to upgrading <em>this</em> site to Drupal 7 yet.</p> <p> I won't be surprised if someone lets me know "there's a module for that". I have found one module which I think would do the same thing although perhaps not as efficiently. I mention this at the end.</p> <p> The goal is to end up with something like this.</p> <p> <img alt="" src="/sites/default/files/ross/201206/shot1.png" style="width: 665px; height: 399px;" /></p> <p> I'm using the word "Writer" instead of "Author" to avoid confusion with the usual node author which the node uid refers to.</p> <p> The writers are Drupal users. I am using the <a href="http://drupal.org/project/entityreference">Entity Reference</a> module to create a field in my Article content type which is a reference to users and allows multiple values. I have added  fields for First Name, Last Name and an Image to the User (People / Account Settings Manage Fields). More about the image later.</p> <p> Creating that listing might look simple enough, given the flexibility Views module but it's more difficult than it looks. Several methods come frustratingly close.</p> <ul><li> Setup your data something like I've done.</li> <li> Create some articles. Make sure some have more than one writer.</li> <li> Create a view of Articles showing Fields, not Content.</li> <li> Add a relationship to Users.</li> <li> Add the node title, post date, a trimmed version of the body or whatever you want to show from the article.</li> <li> Add the First Name, Last Name and Image fields from the related user. I'm using a user defined Image field rather than the built-in <em>Picture</em>. I'll mention why in the final discussion at the end of part two.</li> </ul><p> Now run the view. There is an immediate problem. The node information is repeated for each writer of that article. It will show something like:</p> <p> Article 1 (date, summary etc) - Writer 1<br /> Article 2 (date, summary etc) - Writer 1<br /> Article 2 (date, summary etc) - Writer 2</p> <p> The article 2 info is duplicated. We don't want that. We only want Article 2 to show once with writer 1 and writer 2 somehow connected.  It's not a surprise that this happens when we consider the SQL. I'm simplifying it but the SQL is something like this:</p> <p> SELECT node.title, user.name FROM node<br /> LEFT OUTER JOIN authors ON authors.nid = node.nid<br /> LEFT OUTER JOIN users ON users.uid = authors.uid</p> <p> That will return a row per author.</p> <p> Let's try to fix it.  It's looks like a grouping problem so lets Group on the node fields. This can be done in the <em>Format: Settings</em> of the View.</p> <p> The almost works. You can generate something like this:</p> <p> Article 1 (date, summary etc)<br /> Writer 1<br /> Article 2 (date, summary etc)<br /> Writer 1<br /> Writer 2</p> <p> That looks promising and is pretty much what we want. It just needs some custom templating and styling. I'm not sure how difficult that would be because I haven't played with the Views group templates. Unfortunately, there is a problem. If the view uses a pager then the pager doesn't work as expected. The data returned by the view has one row per writer, not per node. Grouping doesn't change that. The pager just counts rows. This means that an article can be split between pages. In my example above with a page size of 2, Article 2 will appear on the first page with writer 1 and the second page with writer 2. That might be okay in some situations but it wouldn't satisfy my use case. Whenever article 2 is shown, it should have both writers attached. This method also feels a little kludgy to me. Unless I'm missing something, you need to group on every field that the view shows from the node. I assume the grouping works in the code by comparing values from the previous row to see if it's changed. One of my displayed fields is a trimmed body which is a big blob of text. I probably shouldn't worry about it but it just feels wrong to be comparing all these fields when we know that nodes are uniquely defined by node id.</p> <p> Lets try something else. If we base our View on <em>Content</em> rather than <em>Fields</em> and display the <em>Full Content</em> view mode then we do indeed see the multiple writers associated with each article. Unfortunately we have another problem. We only see the user names of the writers. We don't see the name and image fields that we added to <em>People</em>. We don't want the full body and other node fields either. I think it's quite easy with a hook and a few lines of code to create other view modes and we can create custom node templates so some of this might be relatively easily solvable but I don't know how to get fields from related entities. If we define a relationship in our view then that only causes nodes with multiple related records to be duplicated. You can't get at those related entities. I'm sure there are ways to do that with another module or something but... that just feels like it's getting too complicated.</p> <p> Another solution I comtemplated was to simply denormalize the data. The vast majority of our articles have one writer. A few have two and very few have three. I could have easily created fields for writer-1, writer-2, writer-3 etc. This can seem quite tempting but it's usually a bad idea. How many fields should I create? I don't think we've ever had more than three writers for an article but it could just happen. The other problem with doing this is that it would complicate creating a list of articles authored by a specific writer because the filter would need to be something like node.writer1_id = writer_id OR node.writer2_id = writer_id OR node.writer3_id = writer_id etc. Perhaps if we had an enforced limit of two or just maybe three writers then this might be an option but otherwise it feels like a path to pain and regret.</p> <p> If you search online for anything to do with Drupal views and duplicates you will probably find people suggesting turning on <em>Distinct </em>in the Query settings. This doesn't help us at all. It's basically the same as grouping with every field grouped. I think Distinct is useful in situations where you have a one to many relationship but the related data is only used for filtering rather than outputted.</p> <p> That seems like a good place to break. See <a href="http://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-two">Part two</a> for my solution.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sun, 06/03/2012 - 12:33</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/7" hreflang="en">Drupal</a></div> </div> </div> Sun, 03 Jun 2012 15:33:16 +0000 Ross 10774 at https://www.theladderline.com https://www.theladderline.com/drupal-multiple-authors-article-and-views-one-many-relationships-part-one#comments Antenna changes. We are now grounded! https://www.theladderline.com/antenna-changes-we-are-now-grounded <span class="field field--name-title field--type-string field--label-hidden">Antenna changes. We are now grounded!</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> The doublet antenna with ladder line as <a href="/doublets-ladder-line-and-automatic-remote-tuners">described here</a> has been working well but I always felt a little uncomfortable because I knew that there was a problem which I hadn't faced up to. It was kind of cool to have the ladder line coming into the attic where I had a balun and automatic tuner and then coax to the shack in the basement but it had no lightning protection and no practical way of protecting it. So... I have made some changes.</p> <p> The ladder line now comes down to ground level just outside a window to the shack. I have an upside down plastic trash bin which contains the balun and some hardware with coax connectors which are grounded to two 8 ft ground rods. A length of 6 gauge wire goes around the house to connect my antenna ground to the power utility ground rod.</p> <p> Here's what it looks like:</p> <p> <img alt="" src="/sites/default/files/ross/201111/antenna-box-1.jpg" /></p> <p> And inside the box:</p> <p> <img alt="" src="/sites/default/files/ross/201111/antenna-box-2.jpg" /></p> <p> The three coax cables are: The ladder line (i.e., coax from the balun), my VHF vertical and a third that comes out to a single terminal. The green wires are the connections to the two ground rods which are close to the box.</p> <p> And here's inside the shack on the other side of the window.</p> <p> <img alt="" src="/sites/default/files/ross/201111/shack.jpg" style="width: 500px; height: 375px;" /></p> <p> That's my old MFJ-941D manual tuner mounted on the wall. It looks a bit odd but it works well. I mounted it on the wall so the coax between the balun and tuner would be very short because it usually runs at high SWR.</p> <p> It's been quite a project. More than it looks, especially since I'm no mechanical engineer and don't have much in the way of tools. I had to do some creative rerouting of the ladder line which involved using some PVC pipe to hold it away from the roof. The ground rods went in easier than I expected. Luckily I didn't hit any rocks which are common here in New Hampshire, known as the Granite State. The angled grounding bracket came from Chris, KF7P who sells several items of metal work useful to hams at <a href="http://kf7p.com" target="_blank">http://kf7p.com</a>. The SO239 bulkhead connectors came from <a href="http://www.dxengineering.com/Parts.asp?ID=185&amp;PLID=16&amp;SecID=127&amp;DeptID={7C0A8FE1-F72C-4346-916E-8AA93CD2A66B}&amp;PartNo=DXE-363-SST" target="_blank">DX Engineering</a>.</p> <p> An obvious question is: "Have I really provided any protection for the ladder line?". I'm not sure of the answer. It's hard to see how grounding the shield of the short piece of coax coming from the balun really achieves much. I've probably achieved more for the VHF antenna which has a long piece of coax going to a spike in the sky. At least I now have the easy option of disconnecting and grounding the ladder line if any storms are forecast. I couldn't easily do that when it was coming into the attic.</p> <p> I feel like I've made a reasonable effort to comply with the part of the NEC (National Electric Code) which deals with safety of cables coming into a house. I believe the main thing it requires is grounding of coax shields before they enter the house and that ground must be bonded to the utility ground. I considered installed lightning protectors like <a href="http://www.dxengineering.com/Sections.asp?ID=48&amp;DeptID=19" target="_blank">these</a> but decided not to. They're kind of expensive and are not required by the NEC. I guess they are useful for protecting equipment but I always disconnect the equipment when I'm not using it. I'm not sure if one of those would work on the coax to the balun anyway. Voltages on that line would be much higher than the voltage on a matched line which might cause a protection device to "fire" under normal operation.</p> <p> From an operational point of view, I'm very happy with it and pleased to be using a manual tuner again. I could write another post about it but both automatic tuners I own had some problems. The LDG-Z11 Pro seems to be a little unstable at times and decides to retune when it doesn't need to. Comments I've found online suggest that better grounding would help but that's not easy to do when the tuner is in the attic or up in the air. The SGC-239 had the opposite problem. It sometimes wouldn't tune when it needed to. Its SWR threshold was too high for my liking. The output power of the TS430S reduces quickly with any reflected power. Both problems can be very frustrating when you don't have direct control.</p> <p> I can adjust the manual tuner quickly now that I have recorded the settings and I can match it on all parts of all bands from 80 to 10 meters. I'm getting good results. People are often surprised to hear that I'm only running modest power and a wire antenna.</p> <p> The third coax coming out to a single terminal is mostly an experiment for 160 meters. It's so that I can do the classic trick of joining the ladder line wires together and feeding it all against ground as a big random T shaped wire. It works and I've had a few QSOs but, not surprisingly, it picks up lots of noise from the house because the ladder line becomes part of the antenna. I probably don't have anywhere near enough metal in the ground to be efficient.</p> <p> It's all been good fun. I'm done with antenna work for a while and are enjoying operating on the air. Hopefully the ropes will stay in the trees over winter. I haven't been on digital modes for some time because the audio input of my old laptop computer developed a hardware fault. I have now inherited a "new" old laptop which works very well so I'm back on digital. See you on Olivia mode.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 11/19/2011 - 14:11</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> <article role="article" data-comment-user-id="0" id="comment-209" about="/comment/209" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1353140261"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Lane (not verified)</span></span> </p> <p class="comment__time">Sat, 11/17/2012 - 04:17 <span property="schema:dateCreated" content="2012-11-17T08:17:41+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/209#comment-209" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/209#comment-209" class="permalink" rel="bookmark" hreflang="en">Grounded.</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>You have that current balun Correctly Grounded without bonding at that wing nut.This is from the DXE instructions.I run one on my gnd mounted vert.<br /> I have my True Ladder Line lightning arrested via a Wireman two sparkplug arrestor mounted on an eight foot gnd rod. It serves as a tie point for the wire and twin RG8.RG8 comes into the house with shields bonded to earth and station gnd.I use a Palstar BT1500A tuner. The doublet is 134ft at 35ft up.Lazy inverted vee arrangement.The mast is an MFJ fiberglas telescopic re-fitted to go 50 foot total height.Total feed line including the coax is 1/8th wavelength long @ 3.5mc...<br /> Thanks for putting up this page OM ! 73 from Lane...de n8aft</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=209&amp;1=default&amp;2=en&amp;3=" token="GZOg6A0mEKrUQUvRE3xMHldzTxRwmc37P-92HvAFA-I"></drupal-render-placeholder> </div> </article> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/6" hreflang="en">Ham radio (general)</a></div> </div> </div> Sat, 19 Nov 2011 18:11:44 +0000 Ross 7012 at https://www.theladderline.com https://www.theladderline.com/antenna-changes-we-are-now-grounded#comments Doublets, ladder line and automatic remote tuners https://www.theladderline.com/doublets-ladder-line-and-automatic-remote-tuners <span class="field field--name-title field--type-string field--label-hidden">Doublets, ladder line and automatic remote tuners</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> We're back in the old QTH of Wilton, New Hampshire.</p> <p> Of course the first ham project here has been to get an HF antenna up. I've put up the same multiband doublet I had at Mont Vernon. It's a classic doublet which is a half wavelength long on 80 meters fed in the center with ladder line.</p> <p> My "shack" is in the basement which presented a bit of a problem of how to get the ladder line in. I have a MFJ window feedthrough but that doesn't work with the small sliding windows in the basement. My solution is to bring the feedline in through a window into the attic where I have a balun and automatic antenna tuner. Coax then goes out the same window, down the side of the house and into the basement. It's working nicely on all bands 80 to 10m (well almost, see below). I've had considerable success working DX on both phone and CW.</p> <p> Until recently I haven't had much luck with automatic tuners. When I was on the air briefly in 2003 I purchased a SGC SG-239 which worked okay but I didn't have a good antenna. Then when I wanted to get on the air at the Mont Vernon QTH several years later, the SG-239 was pressed into service. It worked for a few hours and then refused to tune. I then decided to buy a LDG Z11-Pro. That worked well for a while until it overheated and burned a coil while operating on 20m CW. LDG happily repaired it under warranty but while it was away, I asked my dad in New Zealand to find and mail me my old MFJ-941D manual tuner. I used that successfully for several years and put the LDG away when it came back repaired. I can't easily use the manual tuner here because I don't have the ladder line coming into the shack like I did in Mont Vernon so I went back to the LDG and it's working well well. It runs on an internal set of AA flashlight batteries. It uses latching relays so it draws very little power except when it tunes but it seldom needs to actually tune because it can return immediately to a previous setting in its memory for that frequency. The batteries can last a couple of years.</p> <h2> Some thoughts on ladder line, doublets etc</h2> <p> My experience is that the center fed doublet with ladder line to a tuner is a great multiband antenna. I think it is sometimes overlooked by new hams who are more likely to turn to the G5RV for multiband use. It's a similar antenna and I don't think there is anything "wrong" with the G5RV so long as people recognize its limitations when trying to use it without a tuner. It can be a subject of heated debates on places like the <a href="http://forums.qrz.com/forumdisplay.php?33-Antennas-Feedlines-Towers-amp-Rotors">qrz.com antenna forum</a>. The common configuration for the G5RV is ladder or window line for a certain length and then coax to the shack. People seem to spend a lot of time messing with the length of antenna or feedline trying to get an acceptable SWR on multiple bands. I would <em>much</em> prefer to have ladder line all the way to a tuner and not need to bother too much about measurements.</p> <p> I cut my doublet to 132 ft (40.2m) mostly because I followed the common instructions that say to make it a half wave on the lowest frequency. I wonder now if I should have made it a little different to avoid extremes of impedence. On 40m it becomes a center fed full wave dipole so the impedence in the center is quite high but despite that, the tuner seems to cope with it. Of course the impedence seen by the tuner depends on the length of the feedline.</p> <p> I don't mean to imply that the ladder line doublet is the perfect antenna. It's never going to substitute for a beam if you're really into busting pileups while chasing rare dx. It's a compromise and dealing with ladder line requires more care than coax but if you can make it work, it's a great way to have fun on all HF bands with a single wire antenna. The radiation pattern on the higher bands is complex with many lobes like the petals of a flower which means that a game of chance determines whether or not you are "beaming" in the right direction for a particular station. I think the remote automatic tuner is a good way to avoid the hassles of getting ladder line into the shack.</p> <p> It's important to feed the line in a well balanced way. In earlier times, link coupled tank circuits or tuners were common. Transmitters often had two big insulated terminals on top for feeding ladder line. Not only does the current need to be of equal magnitude, it must also be opposite phase to avoid radiation from the feedline. These days it's more common to use a balun and a single ended tuner. <em>The balun should be a current balun, not a voltage balun.</em> Equal current is important, not equal voltage. If the antenna is perfectly balanced then equal voltage means equal current but in practice no antenna is perfectly balanced. Many tuners have a "balanced" output but it pays to check what is really inside. The balanced output in many lower cost tuners is fed from a rather low quality voltage balun.</p> <p> There is also some debate about whether the balun should be a 1:1 or 4:1. I think 4:1 has been quite popular in the past. This perhaps comes from the thought that the ladder line is higher impedence than coax so we need need to step down to get it closer to the coax impedence. On the forums, people who have modeled the antenna with software like <a href="http://www.eznec.com">EZNEC</a> seem to make a fairly compelling argument that a 1:1 balun is more likely to present an impedence within the range of the tuner over a wide range of frequencies. The impedence will depend on the length of the ladder line so it's a bit of a gamble but I'm getting good results from a 1:1 current balun.</p> <p> After doing some reading and playing with a home brew balun, I finally took the lazy way out and splashed out on a serious balun. It's a <a href="http://www.dxengineering.com/parts/dxe-bal050h10at">DX Engineering BAL050-H10-AT</a>. It's not cheap but I think it was a good investment. I don't have any hard evidence to show how good it is compared to a cheaper balun but I have a feeling that it contributes to the good performance I get with this antenna. I've had absolutely no "RF in the shack" or similar problems even at the old QTH when I had the ladder line coming into the shack.</p> <p> An interesting fact that I learned from the forums is the reason ladder line works more successfully than coax in a multiband situation like this. The common belief is that ladder line "doesn't care" about high SWR. It's true that ladder line usually has lower loss than coax at a given SWR but that's not the whole story. Another rather simple factor is that the characteristic impedence of ladder line is higher than coax so therefore, for a typical wire antenna over a wide range of frequency, the average SWR on ladder line tends to be lower than it would be with coax and that helps keep the loss low.</p> <p> The only band segment that I can't tune with this antenna and the LDG Z11-Pro is the low end of 80m below about 3.650 MHz. The tuner gives up when it tries. I could probably change the length of the ladder line or the antenna but I haven't bothered because I don't use 80m much, it might mess up the other bands and the current ladder line length is a nice natural fit. As an experiment I tried the MFJ manual tuner in the attic and that tuned effortlessly on 3.501 MHz so I have that option if I really want to operate on 80m CW. I still have the old broken SG-239 tuner and from what I've read, the reason it stopped working is most likely because the sensing diodes have failed. I plan to repair it and see how its tuning range compares with the LDG.</p> <p> The ladder line came from <a href="http://trueladderline.com">http://trueladderline.com</a> and I used a <a href="http://www.radiowavz.com/html/hyper_hanger.html">Hyper_Hanger</a> to get ropes over four trees. There is a tree at each end of the antenna plus a perpendicular rope helping hold the center up. I think the center is up at least 70 ft. I'm fortunate to have plenty of trees around here.</p> <p> Anyway ... I'm very happy with my new antenna.  Here's some photos.</p> <p> 73<br /> Ross</p> <p> <img alt="" src="/sites/default/files/ant4.jpg" style="width: 650px; height: 488px;" /></p> <p> <img alt="" src="/sites/default/files/ross/201108/ant2.jpg" /></p> <p> <img alt="" src="/sites/default/files/ross/201108/ant3.jpg" /></p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sun, 08/07/2011 - 19:35</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/6" hreflang="en">Ham radio (general)</a></div> </div> </div> Sun, 07 Aug 2011 22:35:32 +0000 Ross 4840 at https://www.theladderline.com https://www.theladderline.com/doublets-ladder-line-and-automatic-remote-tuners#comments Inexpensive AD9850 DDS boards on eBay https://www.theladderline.com/inexpensive-ad9850-dds-boards-ebay <span class="field field--name-title field--type-string field--label-hidden">Inexpensive AD9850 DDS boards on eBay</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Hi everyone.</p> <p> No updates for a while. We're getting ready to move house so I've been busy with lots of things around that.</p> <p> Thanks to those who have emailed me reporting that they've built the <a href="/dds-60">Arduino DDS-60 controller</a>.</p> <p> Bob, N9KR pointed out that there are inexpensive DDS boards on eBay that work with my software with minor changes. These use an AD9850 chip which is very similar to the AD9851 in the DDS-60. Search eBay for AD9850. Most are "Buy it now" for about $18.99 with free shipping to the US from Hong Kong. These are not kits but assembled modules ready to go.</p> <p> Bob reports that to cope with the difference between the AD9851 and AD9850, he only had to change the WriteByteToDDS(0x09) in WriteToDDS to WriteByteToDDS(0x08).</p> <p> The clock frequency on these boards is 125 MHz whereas the DDS-60 uses 180 MHz. That requires the following changes.</p> <p> const long CLOCK_BASE = 180000000 &amp; 0xFFFF0000;<br /> change to<br /> const long CLOCK_BASE = 125000000 &amp; 0xFFFF0000;</p> <p> and to make the calibration provide the + or - 100 ppm:</p> <p> const unsigned long CLOCK_LSB_MIN = 0x4EB0;<br /> const unsigned long CLOCK_LSB_MAX = 0xDB50;<br /> change to<br /> const unsigned long CLOCK_LSB_MIN = 0x286C;<br /> const unsigned long CLOCK_LSB_MAX = 0x8A14;</p> <p> I haven't tried one of these myself but it sounds like a very inexpensive way of building a DDS. I don't know what they're like in terms of spectral purity or stability.</p> <p> 73<br /> Ross</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 06/11/2011 - 09:58</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> <article role="article" data-comment-user-id="0" id="comment-190" about="/comment/190" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1308792740"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Hermann (not verified)</span></span> </p> <p class="comment__time">Wed, 06/22/2011 - 22:32 <span property="schema:dateCreated" content="2011-06-23T01:32:20+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/190#comment-190" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/190#comment-190" class="permalink" rel="bookmark" hreflang="en">DDS module works!</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Hi Ross,</p> <p>thanks for this awesome piece of software!<br /> I got one of those modules a few days ago. It´s not actually from Ebay. It is this module: <a href="http://iteadstudio.com/store/index.php?main_page=product_info&amp;cPath=18&amp;products_id=414">http://iteadstudio.com/store/index.php?main_page=product_info&amp;cPath=18&amp;…</a><br /> I did the mentioned changes in the software and it worked right out of the box!<br /> But after a few minutes I noticed that the AD9850 chip got really hot. I measured the current and found out that the module draws 129mA with the Arduino connected and 113mA without the Arduino. That would be 650mW at 5,05V. The data sheet says 380mW at 5V...<br /> Did you measure the drawn current on your DDS-60?<br /> I would be interested to know if the chip on the DDS-60 is getting warm too.</p> <p>Thanks again for this great program and for sharing it!</p> <p>vy 73 de Hermann DL8MCP / AJ4ZS</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=190&amp;1=default&amp;2=en&amp;3=" token="8Ggz8YvZ-0TKI7ZxChb1M1mtk3j_DKNS84GBgQ7UnYs"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-191" about="/comment/191" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1309848278"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Andries Pretorius (not verified)</span></span> </p> <p class="comment__time">Tue, 07/05/2011 - 03:44 <span property="schema:dateCreated" content="2011-07-05T06:44:38+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/191#comment-191" hreflang="en">Permalink</a></p> <p class="visually-hidden">In reply to <a href="/comment/190#comment-190" class="permalink" rel="bookmark" hreflang="en">DDS module works!</a> by <span lang="" typeof="schema:Person" property="schema:name" datatype="">Hermann (not verified)</span></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/191#comment-191" class="permalink" rel="bookmark" hreflang="en">DDS-60 temperature</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I operate two DDS-60 boards. The DDS chip runs hot to the touch, without any perceptible problems, although I have not yet measured the current.</p> <p>73s </p> <p>Andries Pretorius ZR6ABS</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=191&amp;1=default&amp;2=en&amp;3=" token="rvZ9S8fZC_63-0-Pb8lReRTXiMHGFQxfZXU_xhQvH1Y"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-195" about="/comment/195" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1320836975"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">VE2UM (not verified)</span></span> </p> <p class="comment__time">Wed, 11/09/2011 - 07:09 <span property="schema:dateCreated" content="2011-11-09T11:09:35+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/195#comment-195" hreflang="en">Permalink</a></p> <p class="visually-hidden">In reply to <a href="/comment/191#comment-191" class="permalink" rel="bookmark" hreflang="en">DDS-60 temperature</a> by <span lang="" typeof="schema:Person" property="schema:name" datatype="">Andries Pretorius (not verified)</span></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/195#comment-195" class="permalink" rel="bookmark" hreflang="en">...AD9850 DDS modules</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Nov 09 2011</p> <p>Hi...</p> <p>I discovered REALLY CHEAP AD9850 DDS modules on eBay...</p> <p>Simply goto EBAY and type: DDS module</p> <p>There ate PLENTY of them !!!!</p> <p>There are more expensive COMPLETE signal generators at around 60 $ but the modules i talk about are the ones with a square blue pot, a square 125 MHz quartz oscillator and an LED close to the oscillator. Those modules can be bought for less than 12 $. I bought one of them, breadboarded it with a PIC12F1840 for initial tests (serial access) and it works great !</p> <p>The only problem is that documentation on the modules is inexistent. I examined the module and found this pinout (quartz oscillator on the LEFT)</p> <p>Top and bottom rows:</p> <p> Vdd D0 D1 D2 D3 D4 D5 D6 D7 GND</p> <p> Vdd CLK Latch DATA RST GND SQW SQW SinA SinB</p> <p>Vdd is +5V (chip can work at 3v3 but not guaranteed to work at 125MHz)</p> <p>D0 - D7 = Parallel programming bits</p> <p>GND = Ground (obvious); Vss</p> <p>CLK = Serial programming clock<br /> Latch = Serial programming latch (FQ_UD pin on 9850)<br /> DATA = Serial programming DATA (internally tied to D7)<br /> RST = Reset. Keep tied to GND<br /> SQW = Square wave outputs (complementary) Duty cycle adjustable with blue pot.<br /> SINA = Raw unfiltered AD9850 sine output<br /> SINB = 70 MHz LPF filtered AD9850 output.</p> <p>I only tried serial programming. For that purpose, D0 and D1 should be tied to Vdd and D2, to Vss. Keep D7 open, I left D2 - D6 open, but note sure about recommended pin status.</p> <p>The format is: </p> <p>W0 W1 W2 W3 W4 W5 ------------- W28 W29 W30 W31 0 0 0 0 0 0 0 0</p> <p>The frequency word has 32 bits, W0 is the LSB and W31, the MSB. W0 is sent first.</p> <p>The last 8 zeroes are for the two control bitys (keep at "0"), the powerdown bit (keep also at "0") and the five phase bits that i keet at "0" for now.</p> <p>The frequency word calculation is:</p> <p>WORD = Frequency * 4 294 967 296 / 125 000 000</p> <p>I used 125 000 000 for the nominal quartz frequency. The quartz oscillator in not a TCXO and is NOT adjustable. For greater accuracy, you shall read the actual quartz frequency and use it in the formula.</p> <p>Example: for 3750 kHz: WORD = 3 750 000 * 4 294 967 296 / 125 000 000 = 128 849 019</p> <p>in HEX: 07 AE 14 7B.</p> <p>The frequency resolution is 0,03492 Hz, so you can build a really smooth VFO with the AD9850.</p> <p>Remember: This is a DDS. While the signal is not bad (use the filtered SinB signal), it is not perfect. If you want to get on the air, you will need a lowpass filter for your band to prevent interference.</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=195&amp;1=default&amp;2=en&amp;3=" token="ZMwNV1KGNABeDa9gr0UfGicPQDwGjDZDTOP_beFVtlM"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-210" about="/comment/210" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1355533007"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Ian (not verified)</span></span> </p> <p class="comment__time">Fri, 12/14/2012 - 20:56 <span property="schema:dateCreated" content="2012-12-15T00:56:47+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/210#comment-210" hreflang="en">Permalink</a></p> <p class="visually-hidden">In reply to <a href="/comment/190#comment-190" class="permalink" rel="bookmark" hreflang="en">DDS module works!</a> by <span lang="" typeof="schema:Person" property="schema:name" datatype="">Hermann (not verified)</span></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/210#comment-210" class="permalink" rel="bookmark" hreflang="en">DDS AD9850 module</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Sorry to bump an old thread, but I recently got one of these and had a play. I, too, noticed things getting a bit warm so I checked around. The 125MHz oscillator is a 3.3v spec device. If you look carefully at some of the ebay adverts, you can see that some versions of the board actually say 3v3 on the oscillator itself.<br /> To help counter the 5v/3.3v issue, I added two 1n4001 diodes in series with the supply, from the arduino to the DDS board and things seemed a lot happier. It isn't quite as low as 3v3 but at least the oscillator runs a lot cooler. I later replaced the arduino supply to the AD9850 with its own 7805, but I left the diodes in. I suppose I could have ordered a proper 3v3 regulator, but life's too short and I already had 5v regulators lying around.<br /> I haven't had a problem with speed, so I guess it is happy at its supply level.</p> <p>Ian G0OTO</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=210&amp;1=default&amp;2=en&amp;3=" token="jVgrVkdWYglwZA-U3pz5MenD2nokE54ZKW7gJce6vSA"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-218" about="/comment/218" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1391920378"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Bob (not verified)</span></span> </p> <p class="comment__time">Sun, 02/09/2014 - 00:32 <span property="schema:dateCreated" content="2014-02-09T04:32:58+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/218#comment-218" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/218#comment-218" class="permalink" rel="bookmark" hreflang="en">More on the AD9850 DDS VFO</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Just to update: </p> <p>I've built 3 of these AD9850 VFOs since my original note to Ross &amp; they're now down to $4 or $5 bucks on eBay. Due to Ross's amazing arduino code they make terrific homebrew &amp; boatanchor rig VFO's as well as bench test signal generators to 40Mhz. If anyone's interested I've posted a youtube video --&gt; <a href="http://youtu.be/W_dlocgMEpI">http://youtu.be/W_dlocgMEpI</a></p> <p>73, Bob N9KR</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=218&amp;1=default&amp;2=en&amp;3=" token="oylRTldUYUklMt0CaYr7tQtcMbfGbrHzMgUo5pvTKJE"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-224" about="/comment/224" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1417381061"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous (not verified)</span></span> </p> <p class="comment__time">Sun, 11/30/2014 - 16:57 <span property="schema:dateCreated" content="2014-11-30T20:57:41+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/224#comment-224" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/224#comment-224" class="permalink" rel="bookmark" hreflang="en">Unreliable AD9850 DDS boards</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I have got a bunch of these on ebay from different suppliers. I have noticed that a few do not work properly, from the ones I have tested. What happens is sometimes they produce a nice sine wave output at the desired frequency, and sometimes they do not. Flicking the Vcc line sometimes fixes the problem (if you can call that a fix). To explain further, when I flick the Vcc line, the AD9850 module does not power down completely as it is being kept half-powered by the 4 wires connecting it to the Arduino board. But it seems doing this "nudges" something and then the AD9850 starts, even though the Arduino was doing nothing at the time, which further means that the frequency was already transmitted properly but the AD9850 was refusing to produce it, until I flicked the Vcc line. If anyone has any ideas please let me know. Many thanks</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=224&amp;1=default&amp;2=en&amp;3=" token="QbUKfHu30pFhoMh0KLyrb3EFfuhHElnE-O3-QbmFxbw"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-247" about="/comment/247" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1424477525"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">kd5byb (not verified)</span></span> </p> <p class="comment__time">Fri, 02/20/2015 - 20:12 <span property="schema:dateCreated" content="2015-02-21T00:12:05+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/247#comment-247" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/247#comment-247" class="permalink" rel="bookmark" hreflang="en">Very nice!</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I'm very happy to have found your webpage and your code!</p> <p>My goal is to build a frequency-agile LOWFER receiver. I want to replace the 30 MHz oscillator on the AD9851 board with a very-low drift OCXO or the output from a GPS disciplined 10 MHz frequency standard.</p> <p>I'm using your code on an Arduino Uno board using one of the newer AD9851 boards on eBay. Everything is working GREAT except the encoder is "jumpy." What I mean by this is as follows:</p> <p>If I have it in 1 Hz mode and I turn it one click, the frequency moves anywhere between 1 and 20 Hz. </p> <p>The 0.22uF caps make this worse. After removing the 0.22uF caps, it settles down some - it now jumps anywhere from 1 to 4 Hz. </p> <p>I've tried it with two different mechanical encoders. One was from a junked monitor, the other is a Bourns unit from Adafruit that has very similar specs to the one you suggested from Mouser.</p> <p>All of this is on a solderless breadboard, so I almost wonder if stray capacitance or something is causing the issue?</p> <p>Any ideas welcome...but really...I could use it very effectively as-is!</p> <p>thanks much and 73,<br /> ben, kd5byb</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=247&amp;1=default&amp;2=en&amp;3=" token="N1EbYi22VoLfp84rOkO2biY7aN4zJ6_3pwxtn7cm1sQ"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-248" about="/comment/248" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1424532367"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">kd5byb (not verified)</span></span> </p> <p class="comment__time">Sat, 02/21/2015 - 11:26 <span property="schema:dateCreated" content="2015-02-21T15:26:07+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/248#comment-248" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/248#comment-248" class="permalink" rel="bookmark" hreflang="en">Fixed my encoder issue. :)</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I figured out what was wrong with my encoders. Both of my encoders have detents. The detents were in a place where neither switch was active, so transitioning between detents caused several changes in the position of the switches before they went open again.</p> <p>I just opened up one of the encoders, removed the detent spring, put it back together, hooked it up, and it works great!</p> <p>Thanks much and 73,<br /> ben, kd5byb</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=248&amp;1=default&amp;2=en&amp;3=" token="d7heWZF_GmyVbTJzNVfCZpsTWDI39QjqAsFxnNROJK0"></drupal-render-placeholder> </div> </article> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/1" hreflang="en">Arduino</a></div> <div class="field__item"><a href="/taxonomy/term/2" hreflang="en">DDS</a></div> </div> </div> Sat, 11 Jun 2011 12:58:11 +0000 Ross 3162 at https://www.theladderline.com https://www.theladderline.com/inexpensive-ad9850-dds-boards-ebay#comments Callsign lookup tool https://www.theladderline.com/callsign-lookup <span class="field field--name-title field--type-string field--label-hidden">Callsign lookup tool</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> I've been learning how to program with <a href="http://www.silverlight.net" target="_blank">Microsoft Silverlight</a>. I thought that a nice exercise would be to implement a callsign lookup application. Well... here it is!</p> <!--break--><div id="silverlightControlHost" style="height: 430px; width: 440px; text-align: center; margin: 0pt auto;"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="/sites/default/files/ross/xap/Callook.xap?x=1" /><param name="onError" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="4.0.50826.0" /><param name="autoUpgrade" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50826.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none" /></a> </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> <p> If you have Silverlight installed you should see a form above. If you don't have Silverlight installed you should see a big button prompting you to install it from Microsoft. It's quick, easy and quite safe. It works with most common browsers on Windows and Mac.</p> <p> Enter a callsign to lookup and then press the enter key or hit the lookup button with your mouse.</p> <p> It's based on FCC data so it only finds US callsigns. The data comes from <a href="http://callook.info" target="_blank">Callook.info</a> which is a project created by Joshua Dick, W1JDD. Silverlight runs in the browser. When you hit the lookup button, your browser directly queries the data at Callook.info.</p> <p> I just did this for my own learning. It doesn't provide anything more than you can get directly at Josh's site but feel free to use it if you find it useful. Let me know if you find any bugs.</p> <p> 73<br /> Ross</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 01/24/2011 - 22:01</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> <article role="article" data-comment-user-id="0" id="comment-188" about="/comment/188" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1296123094"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><a rel="nofollow" href="http://www.hambrew.net" lang="" typeof="schema:Person" property="schema:name" datatype="" content="Soeren Straarup / OZ2DAK" class="username">Soeren Straaru… (not verified)</a></span> </p> <p class="comment__time">Thu, 01/27/2011 - 06:11 <span property="schema:dateCreated" content="2011-01-27T10:11:34+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/188#comment-188" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/188#comment-188" class="permalink" rel="bookmark" hreflang="en">Lookup OZ2DAK -&gt; Not a valid callsign</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Hi,</p> <p>I'm OZ2DAK, i've had that call since late 1992.</p> <p>I'm on qrz.com</p> <p>Vy 73 de OZ2DAK, Soeren</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=188&amp;1=default&amp;2=en&amp;3=" token="kWrzuXAjsOPNpp58Ytifmg1gADsF7KeO-dj_PvWkd3A"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-189" about="/comment/189" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1296123183"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><a rel="nofollow" href="http://www.hambrew.net" lang="" typeof="schema:Person" property="schema:name" datatype="" content="Soeren Straarup / OZ2DAK" class="username">Soeren Straaru… (not verified)</a></span> </p> <p class="comment__time">Thu, 01/27/2011 - 06:13 <span property="schema:dateCreated" content="2011-01-27T10:13:03+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/189#comment-189" hreflang="en">Permalink</a></p> <p class="visually-hidden">In reply to <a href="/comment/188#comment-188" class="permalink" rel="bookmark" hreflang="en">Lookup OZ2DAK -&gt; Not a valid callsign</a> by <a rel="nofollow" href="http://www.hambrew.net" lang="" typeof="schema:Person" property="schema:name" datatype="" content="Soeren Straarup / OZ2DAK" class="username">Soeren Straaru… (not verified)</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/189#comment-189" class="permalink" rel="bookmark" hreflang="en">btw .. after trying some other calls ..</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>I must conclude that you have only added support for .us callsigns</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=189&amp;1=default&amp;2=en&amp;3=" token="tGN-6CE4n3k2ZZR9SdKnlkFHN9nrFbxwBMDNBOhSYhw"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="0" id="comment-192" about="/comment/192" typeof="schema:Comment" class="comment js-comment by-anonymous clearfix"> <span class="hidden" data-comment-timestamp="1311017326"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/0" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Roger Hancock (not verified)</span></span> </p> <p class="comment__time">Mon, 07/18/2011 - 16:28 <span property="schema:dateCreated" content="2011-07-18T19:28:46+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/192#comment-192" hreflang="en">Permalink</a></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/192#comment-192" class="permalink" rel="bookmark" hreflang="en">License class</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Hi, </p> <p>I have only a minor comment: My first call was N3ASA, which I obtained in 1979, and it was a Technician's license, not a General license. </p> <p>Roger</p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=192&amp;1=default&amp;2=en&amp;3=" token="WUIeT0NxAjQBBdvWWNpwQkyiLJzgUcHkva5WLzVH6QM"></drupal-render-placeholder> </div> </article> <article role="article" data-comment-user-id="3" id="comment-193" about="/comment/193" typeof="schema:Comment" class="comment js-comment by-node-author clearfix"> <span class="hidden" data-comment-timestamp="1311017760"></span> <footer class="comment__meta"> <article typeof="schema:Person" about="/user/3" class="profile"> </article> <p class="comment__author"><span rel="schema:author"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> </p> <p class="comment__time">Mon, 07/18/2011 - 16:36 <span property="schema:dateCreated" content="2011-07-18T19:36:00+00:00" class="rdf-meta hidden"></span> </p> <p class="comment__permalink"><a href="/comment/193#comment-193" hreflang="en">Permalink</a></p> <p class="visually-hidden">In reply to <a href="/comment/192#comment-192" class="permalink" rel="bookmark" hreflang="en">License class</a> by <span lang="" typeof="schema:Person" property="schema:name" datatype="">Roger Hancock (not verified)</span></p> </footer> <div class="comment__content"> <h3 property="schema:name" datatype=""><a href="/comment/193#comment-193" class="permalink" rel="bookmark" hreflang="en">Hi RogerIt&#039;s must be wrong</a></h3> <div property="schema:text" class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Hi Roger</p> <p>Thanks for the feedback. It just mirrors what's in the FCC database. Your previous license class is wrong there too.</p> <p><a href="http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=489083">http://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=489083</a></p> </div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=193&amp;1=default&amp;2=en&amp;3=" token="vFFEYqK7Sd5IpVkr_-UNEvYZgzZqj38uw4l2Eq-yA4Y"></drupal-render-placeholder> </div> </article> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/6" hreflang="en">Ham radio (general)</a></div> </div> </div> Tue, 25 Jan 2011 02:01:04 +0000 Ross 41 at https://www.theladderline.com https://www.theladderline.com/callsign-lookup#comments New callsign - KT1F https://www.theladderline.com/new-callsign-kt1f <span class="field field--name-title field--type-string field--label-hidden">New callsign - KT1F</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> I decided that it was time to get a shorter callsign so it's goodbye to KB1KGA and hello to ...</p> <p> <span style="font-size: 26px;">KT1F</span></p> <p> I avoided making a change for quite a while because the process seemed kind of tedious but it's not really. I just kept an eye on <a href="http://vanityhq.com" target="_blank">vanityhq.com</a> and applied for several 2x1 calls that were listed as immediately available. KT1F was my first choice. I'm pretty happy with it. It's short for CW and seems to go over well on phone as kilo tango one foxtrot. The application took about three weeks.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 11/15/2010 - 12:41</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/6" hreflang="en">Ham radio (general)</a></div> </div> </div> Mon, 15 Nov 2010 16:41:47 +0000 Ross 35 at https://www.theladderline.com https://www.theladderline.com/new-callsign-kt1f#comments QRP 40 meter CW transceiver https://www.theladderline.com/qrp-40-meter-cw-transceiver <span class="field field--name-title field--type-string field--label-hidden">QRP 40 meter CW transceiver</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p> I finally got my act together and built a transceiver. It's for 40 meters <span>CW</span> and has about 4 watts output. Some of the details may be of interest to other <span>homebrew</span> experimenters.</p> <!--break--><p> Use the links below or over on the right to navigate through the article.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/user/3" typeof="schema:Person" property="schema:name" datatype="">Ross</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 10/30/2010 - 23:04</span> <section class="field field--name-comment field--type-comment field--label-hidden comment-wrapper"> </section> <div class="field field--name-tags1 field--type-entity-reference field--label-above"> <div class="field__label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/taxonomy/term/5" hreflang="en">CW</a></div> <div class="field__item"><a href="/taxonomy/term/4" hreflang="en">QRP</a></div> </div> </div> Sun, 31 Oct 2010 02:04:04 +0000 Ross 34 at https://www.theladderline.com https://www.theladderline.com/qrp-40-meter-cw-transceiver#comments